动态插入script标签并执行回调

动态插入script标签并执行回调,第1张

在看到 polyfill.io 后里面有个动态插入polyfill的关键点,感觉挺巧妙的,以后遇到这种类似需求也可以照着去实现

实现原理其实很简单,只需要在加载的脚本最后面添加执行函数就可以,

例如上面的脚本加载结束之后的例子:

重点在最后一句 typeof main==='function' &&main()

此种方法也可以加载服务器上的静态资源数据,

将服务器上的数据使用 *.js ,然后里面就放一个执行函数,当然此时也可以携带参数数据,当用script标签动态加载后,这个执行函数就会执行.实现了动态加载数据.

data.js数据为:

您好,感谢您对火狐的支持

可以用正则表达式 动态创建,具体方法可以参考:http://www.jb51.net/article/17420.htm

您可以在火狐官方网站下载火狐浏览器,在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。

这个可以参考tangram里的callByBrowser方法,这个方法就是动态添加一个script标签,加载完后删除这个标签用的

地址 http://tangram.baidu.com/api#baidu.sio%28%29.callByBrowser%28%29

这是其中一部分代码,你自己修改下就行了

var scr =

document.createElement("SCRIPT"),

scriptLoaded

= 0,

options = opt_options

|| {},

charset =

options['charset'],

callback =

opt_callback || function(){},

timeOut

= options['timeOut'] || 0,

timer

// IE和opera支持onreadystatechange

// safari、chrome、opera支持onload

scr.onload = scr.onreadystatechange = function () {

// 避免opera下的多次调用

if (scriptLoaded) {

return

}

var readyState = scr.readyState

if ('undefined' == typeof readyState

|| readyState == "loaded"

|| readyState == "complete") {

scriptLoaded = 1

try {

callback()

clearTimeout(timer)

} finally {

scr.onload = scr.onreadystatechange = null

baidu.sio._removeScriptTag(scr)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11640760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存