chr*_*riv 12 javascript runtime-error function undefined internet-explorer-9
我在IE 9中遇到了JavaScript范围的真正问题.
这是在我的文档正文中(是的,我知道脚本应该在正确的HTML中,但我从来没有打破过脚本).该脚本在正文中,因为我不想弄乱只与此页面相关的脚本的共享页眉:
<script type="text/javascript">
function googleMapsQuery(accountNum) {
// function code is here (omitted for brevity)
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是在td块内部tr块内的tbody块内部table块内部form块内部body:
<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button>
Run Code Online (Sandbox Code Playgroud)
我甚至将脚本块移到了表单上方,以防脚本函数声明的顺序相关(事实并非如此).
该脚本在FireFox和Chrome中运行完美,但在IE 9中(有或没有兼容性视图),我收到此错误:
SCRIPT5007:属性"googleMapsQuery"的值为null或未定义,而不是Function对象
我研究了JavaScript范围,我无法弄清楚为什么IE认为'googleMapsQuery'是一个属性,以及为什么它未定义.这是一个功能,我定义了它!
Chr*_*ris 21
我遇到类似的问题,属性为null或未定义.
这最终导致IE的文档模式被默认为IE7标准.这是由于兼容模式被自动设置为用于所有Intranet站点(工具 > 兼容性视图设置 > 在兼容性视图中显示Intranet站点).
chr*_*riv 11
我找到了答案,尽管我报告的内容,但它并非特定于浏览器.错误在我的功能代码中,并且会在任何浏览器中发生.归结为此.我的代码中有两行是FireFox/FireBug特有的.他们使用了console.log.在IE中,他们抛出了一个错误,因此我将它们评论出来(或者我认为).我做了一个糟糕的工作评论他们,并打破了我的功能包围.
原始代码(包含console.log):
if (sxti.length <= 50) console.log('sxti=' + sxti);
if (sxph.length <= 50) console.log('sxph=' + sxph);
Run Code Online (Sandbox Code Playgroud)
破碎的代码(注释中的错误括号):
if (sxti.length <= 50) { //console.log('sxti=' + sxti); }
if (sxph.length <= 50) { //console.log('sxph=' + sxph); }
Run Code Online (Sandbox Code Playgroud)
固定代码(注释外的固定括号):
if (sxti.length <= 50) { }//console.log('sxti=' + sxti);
if (sxph.length <= 50) { }//console.log('sxph=' + sxph);
Run Code Online (Sandbox Code Playgroud)
所以,这是我自己的草率编码.该函数确实未定义,因为语法错误使其无法关闭.
哦,生活和学习.;)
| 归档时间: |
|
| 查看次数: |
107269 次 |
| 最近记录: |