我尝试了经典的ajax方法,但在尝试添加存储在另一个域上的脚本时会抛出访问被拒绝的javascript异常。 现在,我确信这是可能的,因为谷歌只通过js填充谷歌广告; twitter也是如此,列表可以继续。
到目前为止我是如何想到的:
<div id="divId"></div>
<script type="text/javascript" src="http://mysite.com/script.js"></script>
script.js中的脚本应该已经更改了上面div的innerHTML属性。相反,我在fireBug中收到以下消息:访问受限制的URI拒绝代码:1012
我google了一下,但只找到了无用的解决方法,比如php代理等,而我希望将这个小部件复制粘贴到其他人的网站,博客,论坛等中。
提前感谢任何有用的回复。 :)
答案 0 :(得分: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>
第一个脚本标记加载库,而实际操作页面的第二个脚本标记直接添加为代码。
答案 1 :(得分: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。