2010-08-16 55 views
0

我嘗試了經典的ajax方法,但是當嘗試添加存儲在另一個域上的腳本時會拋出拒絕訪問javascript異常。 現在,我相信這是可能的,因爲谷歌只通過js填充谷歌廣告; Twitter也是如此,列表可以繼續。創建一個小部件來檢索和顯示數據通過ajax

我怎麼想到這一點至今:

<div id="divId"></div> 
<script type="text/javascript" src="http://mysite.com/script.js"></script> 

腳本中的script.js應該已經改變了DIV的innerHTML屬性上面。相反,我在fireBug中獲得以下消息:訪問受限制的URI拒絕代碼:1012

我搜索了一下,但只找到了無用的解決方法,例如php代理等,但我希望此小部件可以複製,粘貼到其他人的網站,博客,論壇等。

在此先感謝您的任何有用的回覆。 :)

回答

1

您看到的行爲是打算和出於安全原因。您不希望第三方腳本對您的頁面進行任何更改,因爲這可能會被嚴重利用。

相反,給你的用戶一個JavaScript片段嵌入他們的頁面。

<script> 
    // do stuff here 
</script> 

請注意,在這段代碼中,您可以動態創建腳本標記,設置src屬性並加載實際的JavaScript。用戶在其頁面上嵌入的此片段可以訪問整個DOM,但外部加載的腳本不會。

這裏的輪廓的小工具,Twitter的給出了嵌入在網頁中的一個例子:

<!-- external js, can't access or change the DOM --> 
<script src="http://widgets.twimg.com/j/2/widget.js"></script> 
<!-- local js, does that --> 
<script> 
new TWTR.Widget({ 
    version: 2, 
    .. 
    .. 
}).render().setUser('hulu').start(); 
</script> 

第一個腳本標籤加載庫,而這實際上操縱頁面,第二個是直接添加代碼。

+0

問題不在於我無法操作頁面上的DOM對象。我可以做到這一點。 事情是瀏覽器不讓我發送一個ajax http請求到當前域以外的頁面是主頁。 這就是「訪問受限URI拒絕代碼:1012」指的。 我需要ajax http請求從數據庫中獲取數據。 – devland 2010-08-17 11:08:15

0

我終於找到了一個不涉及ajax的解決方案。 我簡單地使用

<div id="objectId"></div> 
<script type="text/javascript" src="http://mysite.com/getAndDisplayData.php"></script> 
<script type="text/javascript">getAndDisplayData();</script> 

而在getAndDisplayData.php我生成一個JS腳本,將創建我的插件的DIV裏面的上方。 php文件還連接到數據庫並檢索所有必需的小部件數據。 顯然這是谷歌廣告如何工作,雖然我不知道。可以肯定的是他們不使用ajax。

相關問題