Javascript 未在历史记录上加载动态脚本。go()

Javascript 未在历史记录上加载动态脚本。go(),javascript,jquery,browser-history,Javascript,Jquery,Browser History,我有一个无法编辑的静态html页面——它确实引用了一个js文件,所以我要做的是将IIS服务器上的url请求重定向到我的js文件——在那里我动态地注入jQuery以便使用它。下面是我用来插入jQuery的代码: var script = document.createElement( 'script' ); script.src = 'http://code.jquery.com/jquery-1.9.1.js'; script.type = 'text/javascript'; script.o

我有一个无法编辑的静态html页面——它确实引用了一个js文件,所以我要做的是将IIS服务器上的url请求重定向到我的js文件——在那里我动态地注入jQuery以便使用它。下面是我用来插入jQuery的代码:

var script = document.createElement( 'script' );
script.src = 'http://code.jquery.com/jquery-1.9.1.js';
script.type = 'text/javascript';
script.onload = jqueryReady;              //most browsers
script.onreadystatechange = function () { //ie
    if ( this.readyState == 'complete' ) {
        jqueryReady();
    }
};
除了一种特殊情况外,这种方法非常有效——如果我在浏览器为IE且页面由内部web服务器提供服务时调用页面上的history.go()。按F5也不能正确重新加载页面。我必须将光标放在地址栏中,然后按enter键才能正确加载

编辑:忘了提到一个明显的问题-我在jqueryReady()函数中有一个断点-它从未被击中-这就是问题所在

在我的开发环境中,如果我向上提供页面,然后启动history.go()(只需单击一个按钮),IE就可以正常工作。它与chrome兼容,但尚未测试firefox

那么,除了history.go()之外,还有其他方法可以像在地址栏中按enter键一样重新加载“true”页面吗

这也是一个巨大的页面-6000行html(我没有写它)和jQuery,所有javascript都在头部加载-我知道你应该在页面末尾加载js内容。也许这有关系?这感觉像是一个时间问题


有没有人对要检查/尝试的东西有什么想法?或者知道发生了什么事?

好的,找到了。。。所以解决办法是

底线是我使用的代码不正确,建议使用这种方法将脚本动态插入文档,然后处理就绪事件:

var script = document.createElement( "script" );
script.src = "/reporter/scripts/jquery-1.9.1.min.js";
if ( script.addEventListener ) {
    script.addEventListener( "load", jqueryReady, false );
}
else if ( script.readyState ) {
    script.onreadystatechange = jqueryReady;
}
document.getElementsByTagName( 'head' )[0].appendChild( script );
此外,我还需要检查jQuery是否已加载到我的jqueryReady函数中:

function jqueryReady() {
    // Check if jQuery exists
    if ( typeof jQuery != 'undefined' ) {
        // do stuff like $(document).ready()
    }
}
这似乎在我能找到的所有情况下都有效


希望这对其他人有帮助

好的,找到了。。。所以解决办法是

底线是我使用的代码不正确,建议使用这种方法将脚本动态插入文档,然后处理就绪事件:

var script = document.createElement( "script" );
script.src = "/reporter/scripts/jquery-1.9.1.min.js";
if ( script.addEventListener ) {
    script.addEventListener( "load", jqueryReady, false );
}
else if ( script.readyState ) {
    script.onreadystatechange = jqueryReady;
}
document.getElementsByTagName( 'head' )[0].appendChild( script );
此外,我还需要检查jQuery是否已加载到我的jqueryReady函数中:

function jqueryReady() {
    // Check if jQuery exists
    if ( typeof jQuery != 'undefined' ) {
        // do stuff like $(document).ready()
    }
}
这似乎在我能找到的所有情况下都有效

希望这对其他人有帮助