簡短問題:異常的「sourceID」是指什麼,以及如何將其鏈接到相關的源字符串/文件?如何將UIWebView javascript異常的sourceId與源文件關聯?
更長的故事:
我通過[UIWebView stringByEvaluatingJavaScriptFromString:]
運行的JavaScript代碼在iPhone本機應用程序。爲了幫助開發,後來檢查用戶提供的代碼,我用下面的函數來安全地運行任何代碼:
// Inside @implementation MyJS
- (NSString *)runJS:(NSString *)js {
// Do some escaping on 'js' to make it look like a string literal.
js = escape(js);
NSString *result =
[webView stringByEvaluatingJavaScriptFromString:
[NSString stringWithFormat:@"try { JSON.stringify(eval(\"%@\")); } except (e) { JSON.stringify(e); }", js]
];
return result;
}
如果一切順利,[MyJS runJS:js]
運行正常,並返回包含的評價結果的JSON字符串'js'代碼中的最後一個聲明。
現在,如果在評估過程中發生了不好的事情,我會得到一個JSON化的異常對象。例如,在「JS」碼的語法錯誤的情況下,我得到這樣的:
{「消息」:「解析錯誤」,「線」:1,「的SourceID」:26121296}
這已經是跟蹤問題非常有用......
然而,當我通過runJS:
運行多個字符串,我希望能夠找出其中一個導致異常(因爲運行時錯誤可能來自在之前的JavaScript代碼字符串中創建的函數)。這個「sourceId」屬性看起來很有趣,但我找不到它指向的內容。它看起來像一個指針地址(與指向其他對象的指針類似),但它與我傳遞給評估程序的任何字符串都不匹配。我怎樣才能使這個鏈接?
對於獎勵積分:是否有任何有關UIWebView特定的JavaScript環境的文檔,像這個異常對象? Safari Web Content Guide很好,但沒有涉及到這種細節。