仅当我不通过 jQuery 附加它时才执行的脚本?
Posted
技术标签:
【中文标题】仅当我不通过 jQuery 附加它时才执行的脚本?【英文标题】:A script that is executed only if I don't append it by jQuery? 【发布时间】:2012-02-27 09:13:30 【问题描述】:这是我的代码:
<script src="http://widgets.twimg.com/j/2/widget.js"></script><script>new TWTR.Widget(version: 2,type: "profile",rpp: 4,interval: 30000,width: 650,height: 202,theme: shell: background: "#7ee1fc",color: "#2e2e2e",tweets: background: "#ffffff",color: "#949494",links: "#009ece",features: scrollbar: true,loop: false,vlive: false,hashtags: true,timestamp: true,avatars: false,behavior: "all").render().setUser("microsoft").start();</script>
其中加载了一个 twitter 插件(但这实际上无关紧要)。好吧,现在,如果我将整个代码写在一个“字符串”中并通过 jQuery 附加它:
var myText='<script src="http://widgets.twimg.com/j/2/widget.js"><\/script><script>new TWTR.Widget(version: 2,type: "profile",rpp: 4,interval: 30000,width: 650,height: 202,theme: shell: background: "#7ee1fc",color: "#2e2e2e",tweets: background: "#ffffff",color: "#949494",links: "#009ece",features: scrollbar: true,loop: false,vlive: false,hashtags: true,timestamp: true,avatars: false,behavior: "all").render().setUser("microsoft").start();<\/script>'
$('#twitterContent').html(myText);
似乎它无法加载它(我收到一个错误,TWTR 未定义)。
那么为什么一个版本可以工作而另一个版本不行呢?我该如何解决这个问题?
附:如果你想要测试代码,this 是最重要的。
【问题讨论】:
<\/script>
?我认为您不需要在字符串中转义这些...
jQuery: Can't append <script> element的可能重复
@elclanrs:这是必需的——否则浏览器的解析器会将其视为 <script>
标记的结尾...包含 javascript 代码的标记。
【参考方案1】:
jQuery 版本:
$.getScript("http://widgets.twimg.com/j/2/widget.js", function()
new TWTR.Widget(id: 'twitterContent',version: 2,type: "profile",rpp: 4,interval: 30000,width: 650,height: 202,theme: shell: background: "#7ee1fc",color: "#2e2e2e",tweets: background: "#ffffff",color: "#949494",links: "#009ece",features: scrollbar: true,loop: false,vlive: false,hashtags: true,timestamp: true,avatars: false,behavior: "all").render().setUser("microsoft").start();
);
FIDDLE
【讨论】:
我编写的代码完全相同,但速度更快。恭喜! :) 我得到了这个奇怪的结果,你的 JSFiddle 经常出错attempt to run compile-and-go script on a cleared scope
。这是想要的效果吗?
@Marc 没那么烦人。去过那里,不止一次!
这将清除文档内容并将所有内容替换为 twitter 内容!
@SalmanA - 这是一个 twitter 问题,所有这些小部件都需要传递一个 ID,否则它只会写入它内部的任何元素,在外部脚本中完成时将是文档。此外,将它包装在 window.onload 中或使用超时来延迟它会阻止它阻止网站加载,这通常是要走的路,因为这种社交媒体垃圾往往会使大多数网站的加载速度变慢。【参考方案2】:
我认为您需要另一种插入脚本元素的方法
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = url;
script.text = ".............";
$("#twitterContent").append( script );
【讨论】:
以上是关于仅当我不通过 jQuery 附加它时才执行的脚本?的主要内容,如果未能解决你的问题,请参考以下文章
python 仅当.py文件作为脚本执行时才会执行该块。如果导入.py文件,则此部分不会被执行。好佛
python 仅当.py文件作为脚本执行时才会执行该块。如果导入.py文件,则此部分不会被执行。好佛
PHP - 仅当余数为 0 时才执行(和回显)操作 - 进入无限循环