internetexplorer7-让IE7先加载javascript,然后调用函数
internet explorer 7 - Make IE7 load javascript first then call function
IE7给出以下错误:"myapp"是未定义的
//home.html
<script type="application/x-javascript" src="//www.mysite.com/myjs.js"></script>
<script type="text/javascript" charset="utf-8">
new myapp.myfunc();
</script>
javascript文件:
//myjs.js
myapp = {
myfunc : function(){
alert('hello world');
}
};
*我知道有很多方法可以重写home.html上使用的代码,但我想在不改变这一点的情况下实现这一点。我发现了一个结构相似且没有JS错误的工作示例(IE7、IE6)。https://google-developers.appspot.com/custom-search-ads/docs/sample
编辑:<script>代码将提供给外部客户端,所以我希望它尽可能简单。请参阅示例链接。
奥卡姆的剃刀建议IE/MSHTML中的任何一个都不支持script
元素和type="application/x-javascript"
。这可能与application/x-javascript
不是注册的MIME媒体类型有关,也从来没有必要。
或者这与//www.mysite.example.com/myjs.js
在该环境中不是受支持的URI引用有关。请改用完全限定的URI,如http://www.mysite.example.com/myjs.js
。(请使用注册的示例域作为示例。)
您还应该声明打算用作变量的标识符:
var myapp = {
…
};
如果不执行此操作,则如果文档中存在名为myapp
的元素,则可能会出现问题。在JScript/MSHTML中,标识符解析将在作用域链中找到一个属性为myapp
的主机对象。该属性的值将是对相应元素对象的引用,尝试覆盖该属性值将导致运行时错误。
向主体的Load
事件添加一个事件处理程序。在该事件处理程序中,进行myapp.myfunc()
调用。
每当您让代码可供使用时,您总是希望确保自己是页面上的好公民。这意味着你不想创建不必要的全局变量,并确保你创建的变量足够独特。这就是为什么将代码包装在立即调用的函数表达式中是个好主意。
此外,使用javascript通常更容易完成整个任务。这就是Google分析和Facebook插件加载代码的方式。
<script type="text/javascript">
(function() {
var loadScript = function(src, callback) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = src;
// modern browsers
script.onload = callback;
// IE 6 & 7
script.onreadystatechange = function() {
if (this.readyState == 'complete') {
callback();
}
}
head.appendChild(script);
};
loadScript('path/to/myscript.js', function() {
//script loaded
});
})();
</script>
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 文件上传:检查文件格式,然后调用srvlet
- 如何使用javascript验证表单中的数据,然后调用php页面
- 加载文件,然后调用回调函数
- 当调用.of()然后调用.on()时,Jquery是否可能将事件推迟
- 如何将javascript文件插入到iframe中,然后调用插入的javascript中的函数
- 在函数中传递参数,然后调用onClick函数
- 异步加载ASP.NET绑定的Javascript,然后调用回调
- 一键点击首先调用javascript,执行验证,然后调用控制器方法
- 如何检查文本字段为空,然后调用javascript
- 如何在ActionLink中调用删除前的确认消息,然后调用控制器进行删除
- Jquery OOP 模型阻止默认然后调用基处理程序
- 在另一个函数中使用变量,然后调用新函数
- 加载异步 JS 然后调用函数
- 调用原型的重写方法,然后调用下一个原型的重写方法错误
- TinyMCE只初始化一次,然后调用它退出
- 在同一个元素上调用c#然后调用js
- 动态地将href附加到锚点标记,然后调用click事件
- 然后调用 JavaScript 匿名函数
- 如何不增加setInterval然后调用多次