我通过创建一个脚本标记并将javascript写入其中的.innerHTML来动态加载一些.js。
我得到这个错误:
SCRIPT1004: Expected ';'
develop, line 1487 character 24
这毫无意义。。。所以我猜它报告的行号是正确的还是错误的(我至少很高兴它能做到这一点,没有失败……1487已经接近我的代码的末尾了)。
Firefox通常会报告正确的行,但它总是偏离1行。我以为IE9也会。。。
如何进行故障排除。我已经验证了代码通过jshint.com,这使得它期望;
变得更加奇怪。如果这是真的,Jshint早就知道了。
在IE9上几乎是盲目飞行。
这是代码:上面有10行,下面有10行。第1487行是这样评论的。
/**
*Publik
*/
var publik = {};
publik.initMenu = function( )
{
top_element = document.getElementById( 'top_new' );
bottom_element = document.getElementById( 'wrap_drop_down_new' );
top_element.addEventListener( "mouseout", mouse_out, false );
top_element.addEventListener( "mouseover", top_mouse_over, false ); // Line 1487
bottom_element.addEventListener( "mouseout", mouse_out, false );
bottom_element.addEventListener( "mouseover", bottom_mouse_over, false );
};
return publik;
}());
/* Use this to create Event on completion of .js and remove cStart().
var event_load_js = document.createEvent("HTMLEvents");
event_load_js.initEvent( "blur", true, false );
包含Beat 每个请求的top_muse_over的代码
/**
*MMenu
*/
var MMenu = ( function ()
{
/**
*Private
*/
var top_element,
bottom_element,
time_out_id = 0,
TIME_DELAY = 1000;
function showBottom()
{
top_element.style.border = '1px solid #cfcaca';
top_element.style.borderBottom = '3px solid #cfcaca';
bottom_element.style.visibility = 'visible';
}
function hideBottom()
{
top_element.style.border = '1px solid #faf7f7';
bottom_element.style.visibility = 'hidden';
}
function top_mouse_over()
{
window.clearTimeout( time_out_id );
showBottom();
}
function bottom_mouse_over()
{
window.clearTimeout( time_out_id );
}
function mouse_out()
{
time_out_id = window.setTimeout( hideBottom, TIME_DELAY );
}
从浏览器中复制动态生成的代码,并将其粘贴到Notepad++中,然后搜索"?"以查看是否有unicode字符。我确信控制台没有说实话。我以前也遇到过这种情况。
请参阅:https://stackoverflow.com/a/9246128/1220302
可能与unicode无关。可能是属性onclick或其他内联脚本上缺少引号。我刚刚碰到这个。示例:
<button onclick="alert('hi') title="hello">Click me</button>
此错误仅在解析js时发生,并在第1行中给出错误。我发现这只是在IE中引发了一个脚本解析错误,而不是在Chrome中。错误为:
SCRIPT1004: Expected ';'
mypage.html, line 1 character 54
因为我使用jquery.html()将这个html注入DIV,所以它在页面加载时并没有解析它,而且只在特定条件下解析——但事实上这是一个脚本解析错误。
最近我在IE 11上也遇到了同样的问题,所以我做了以下事情来解决这个问题。
- 按"F12"打开IE浏览器中的控制台窗口
- 请从"仿真"选项卡的文档模式或右侧顶部将IE版本更改为11,而不是旧版本(<IE11),将有一个具有不同IE版本的下拉列表
- 当我们更改IE版本时,浏览器将自动重新加载