gpt4 book ai didi

javascript - 使用 Javascript 加载脚本 - 在 Chrome 上不起作用?

转载 作者:行者123 更新时间:2023-12-02 17:44:36 26 4
gpt4 key购买 nike

我正在尝试使用 Javascript 加载以下脚本:

function put() {
var group = document.getElementById("obj_0123456790");
var children = group.childNodes;

for( var i = 0; i < children.length; i++ ) {
if( (children[i].name == 'movie') || (children[i].name == '') ) {
children[i].src = "http://website.com/song.swf";
}
}
}

if (window.attachEvent) {
window.attachEvent('onload', put);
} else {
if (window.onload) {
var curronload = window.onload;
var newonload = function() {
curronload();
put();
};
window.onload = newonload;
} else {
window.onload = put;
}
}

我使用以下代码加载它:

<script>
var i=document.createElement('script');
i.src="http://website.com/putter.js";
document.head.appendChild(i);
</script>

它在 Firefox 上运行良好,但在 Chrome 上不起作用。我怎样才能让它在 Chrome 上运行?

最佳答案

1.该函数可以跨浏览器异步加载脚本

function loadScript(src, callback)
{
var s,
r,
t;
r = false;
s = document.createElement('script');
s.type = 'text/javascript';
s.src = src;
s.onload = s.onreadystatechange = function() {
//console.log( this.readyState ); //uncomment this line to see which ready states are called.
if ( !r && (!this.readyState || this.readyState == 'complete') )
{
r = true;
callback();
}
};
t = document.getElementsByTagName('script')[0];
t.parent.insertBefore(s, t);
}

2.如果页面上已经有 jQuery,只需使用 $.getScript(url, successCallback)

最简单的解决方案是将所有脚本保持在页面底部内联,这样它们在执行时就不会阻止 HTML 内容的加载。它还避免了必须异步加载每个所需脚本的问题。

如果您有一个并不总是使用的特别奇特的交互,需要某种较大的脚本,那么避免在需要时加载该特定脚本(延迟加载)可能会很有用。

3.来自Google的示例

<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=onLoadCallback';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>

4.您可能会发现这篇 wiki 文章很有趣:http://ajaxpatterns.org/On-Demand_Javascript

5.如果有任何帮助,请查看 Modernizr 。它是一个小型轻量级库,您可以异步加载 JavaScript,其功能允许您检查文件是否已加载并在您指定的其他库中执行脚本。

下面是加载 jquery 的示例:

Modernizr.load([
{
load: '//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js',
complete: function () {
if ( !window.jQuery ) {
Modernizr.load('js/libs/jquery-1.6.1.min.js');
}
}
},
{
// This will wait for the fallback to load and
// execute if it needs to.
load: 'needs-jQuery.js'
}
]);

关于javascript - 使用 Javascript 加载脚本 - 在 Chrome 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21874637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com