2010-12-07 114 views
0

我使用HTA框架,左框架控制主框架並在其中顯示頁面(如導航面板),例如:您按「谷歌」鏈接在左邊,它在主窗口上打開它。 (這不是主要的HTA的目的,但我只是簡化它的解釋)在HTA中停止錯誤報告(無管理員權限)

現在的問題是,當我試圖打開一個錯誤報告的網頁--HTA不斷告訴我有關頁面的錯誤有時甚至頁面無法正常工作。 (錯誤報告不是關於我創建的頁面!) 相同的頁面在IE中完美工作。

在標題中提及我或任何HTA的用戶在系統中沒有管理權限是很重要的。

我把它搜索了很長時間,但從未找到解決方案,我真的很感謝任何有用的提示或解決方案。

感謝, Rotem公司

+0

你能發表有傷害的問題嗎?當我*想*我看到你想要做什麼,實際的頁面代碼將是有用的。此外,「我得到的錯誤」 - 具體是什麼錯誤*? – Piskvor 2010-12-07 21:03:21

+0

你想讓我附上哪些代碼?我的代碼不會創建這些錯誤,我從HTA中獲得的網站確實存在這些錯誤。錯誤是:Javascript錯誤..像任何JavaScript錯誤一樣的常規錯誤。 (就像這個我在網上找到的:http://www.1001bit.com/language_pack/v1.1/images/javascript-error-1.gif)再次感謝 – Rotem 2010-12-07 21:16:08

回答

1

你有幾個選項來解決這個問題。最好的選擇是在Internet Explorer中禁用設置「顯示關於每個腳本錯誤的通知」。由於您正在運行HTA,因此您可以通過編程方式修改HKEY_CURRENT_USER註冊表設置(或者只是手動執行一次)。

第二種方法肯定更多是黑客,但這是我在創建選項卡式瀏覽器時自己解決問題的方式在IE之前有一個HTA標籤瀏覽。而不是導航到iframe中的URL,而是希望AJAX請求內容,並預先設置一個腳本塊,將window.onerror設置爲您選擇的函數。然後將整個內容注入到iframe中。這種方法將吞噬任何錯誤,並讓您根據需要選擇報告它們。

除了注入onerror腳本,您還需要對錨點執行一些預解析操作,以便後續點擊通過ajax注入處理程序進行路由。事實證明,這很複雜,因爲你基本上開始編寫自己的瀏覽器。我仍然有該項目的源代碼,所以我將它發佈到bitbucket回購,並讓你探索我的方法。

否則最後一個選擇是發送一封電子郵件給每個站點的管理員,並告訴他們修復他們的friggin錯誤!但我懷疑這種選擇會泛出你:d

編輯:

加載了舊的項目中,我發現,解決的辦法是比以前要少後是活的。現在,x-frame-options標頭指令可以防止google.com甚至在IE8以後的iframe中加載。由於某種原因,window.onerror陷阱沒有捕獲iframe中的錯誤(實際上可能是一個嵌套的iframe問題,但我沒有一個可行的解決方案。)

但我仍然有選擇檢查錯誤對話框的「不再顯示此消息」選項。這使得我的錯誤對話框停止報告問題,它不需要管理員權限。