2009-12-23 71 views
1

我通過jQuery的load()函數通過AJAX加載頁面。它在IE8中不起作用,給出「權限被拒絕」的錯誤。使用IE調試器,似乎jQuery試圖打開xhr,即阻止它。jQuery load()在IE中拋出「權限被拒絕」錯誤

問題是,我的頁面有一個javascript src,指向bing地圖js api(當然這與我的完全不同)。在我看來,IE試圖通過xhr抓住這個js文件,然後拋出「權限被拒絕」的錯誤。有沒有解決方法?

我只能記住下載bing地圖js自己並在本地提供服務。

+0

爲什麼你使用'.load()'加載.js文件? '.load()'用於從url中獲取html並將其填充到頁面中。也許你想''.getScript'來代替? – 2009-12-23 19:40:55

+0

我正在加載整個頁面,頁面中包含腳本。 – 2009-12-24 12:27:14

回答

2

我最終抓住了腳本的一個副本,並將它自己包含進來,因此它位於同一個域中。

0

您可以將script標記包含到父文檔(製作jQuery load()調用的那個文檔)中的Bing Maps API。

+1

我不控制父文檔。 – 2009-12-24 12:27:45

4

我對此做了更多的測試。似乎錯誤是由頁面上的無效HTML結構引起的。由於這是一個非常複雜的頁面,因此在頁面上打開<div>或<表>,因爲當我將頁面縮短爲最小值時,它也適用於IE。但我不明白爲什麼當你第一次到達頁面時它不工作,如果你刷新頁面,它會在那之後工作。

0

只爲參考:

我經歷過這樣的錯誤在Windows 8與IE 10我的WinForms應用程序中。

在這個應用程序中,我託管一個WebBrowser control,它從內置的web服務器加載其內容,並通過window.external與我的主機WinForms應用程序進行通信。

足夠的關鍵字捕魚。

收到此錯誤

現在發生的事情讓我的應用程序這個jQuery錯誤是:

  1. 瀏覽器已成功加載的URL。
  2. 我以編程方式加載另一個URL。
  3. 然後我立即打開一個Form.ShowDialog的兒童表格。

關閉此表單後,顯示jQuery錯誤。

解決這個錯誤

我推遲子窗體的開放,直到應用程序被閒置解決錯誤。

I.e.我在主窗體中使用了Queue列表,訂閱了Application.Idle事件,並且在此事件處理程序中,我逐個處理了隊列。

新的步驟,現在是:

  1. 瀏覽器已成功加載的URL。
  2. 我以編程方式加載另一個URL。
  3. 將操作打開空閒隊列中的子窗體。
  4. 處理空閒隊列時,會打開子窗體。

然後,錯誤消失了。

我想,我也可以通過訂閱DocumentCompleted event並從那裏顯示子對話框,而不是使用這個空閒處理,直到網頁瀏覽器完成加載。

希望這會幫助別人......