2011-10-11 46 views
3

window.onerror在火狐和Chrome的JavaScript錯誤似乎放棄了真正的錯誤消息/位置始終通過"Script error.", "", 0當違規腳本是比頁面本身不同的域。我有一個單獨的頁面和css/js的wwwstatic子域名,這使得錯誤日誌記錄相當無用。有什麼辦法可以正確記錄這些錯誤嗎?日誌從另一個子域

+0

你應該嘗試禁用同源策略,猜測是因爲它是數據條帶化。有關如何查看http://stackoverflow.com/q/330427/783219的信息。 – Prusse

+0

@Prusse:我能做到這一點的用於研究與開發的瀏覽器(雖然沒有太多的指向它,因爲我看到了錯誤,在我的瀏覽器反正),但這裏的關鍵是捕捉髮生在遊客中的錯誤'瀏覽器。 – Tgr

回答

1

真正的解決辦法是在所有的代碼中使用適當的try { ... } catch(e) { ... }塊。但是,我知道這並不總是一種選擇。

如果你沒有對這些其他腳本控制,你的下一個最好的辦法是將其加載爲通過JSONP字符串,然後使用eval()(是的,我知道eval is evil)給他們「注入」到當前頁面。這樣,你仍然可以獲得使用靜態域的好處(沒有cookies,CDN選項,額外的併發請求等),但JS最終會在頁面的請求域中。

+0

我也需要對JSONP的腳本進行控制,因爲我必須將它轉換爲字符串並將其傳遞給回調函數。 「評估」也可能具有小的性能缺陷,例如失去推遲腳本加載的能力。 Try-catch似乎是更好的解決方案,但對第三方腳本而言仍然有些痛苦。 – Tgr

0

在你的js文件,在上面嘗試做

document.domain = "yourdomain.com" 
+1

請張貼 – broofa

2

它聽起來並不像那裏的時刻是解決類似的問題(我在Mozilla的IRC頻道詢問)。

我提起這些錯誤報告以跟蹤這一問題。如果你有什麼這個最好的辦法是請意見附和:

https://bugzilla.mozilla.org/show_bug.cgi?id=696301

https://bugs.webkit.org/show_bug.cgi?id=70574

+0

從錯誤報告開始前驗證你所建議的答案作品(事實並非如此),我發現[我這篇文章(http://jeremiahgrossman.blogspot.com/2006/12/i-know-if-youre -logged-in-anywhere.html),並解釋了爲什麼這些神祕的錯誤消息對於第一個地方是必需的(這在之前總是令我感到困惑)。感謝那! – Tgr

+1

根據上述錯誤,現在已經解決了這個問題?所以這個問題的答案是在腳本上使用正確的CORS頭文件。 – Tom