你根本无法做你想做的事。当页面更改为"http://example.com"
时,这会启动一系列事件,最终导致整个Javascript上下文停止。您无法在新页面的此页面上运行Javascript。
当分配:
window.location = "http://example.com";
这开始的过程将停止使用Javascript的执行在当前页面。当前页面被卸载并且与其相关联的所有内存都被释放。然后,加载一个新页面,创建一个新的Javascript上下文,然后加载并运行该新页面中的Javascript。
一个新的页面进行通信的常用方法是把想要在新的页面上运行,然后把一些参数是新页面,它的JavaScript可以检测并作出相应反应的JavaScript。
例如,你可以这样做:
window.location = "http://example.com?doSomething=whatever";
而且,然后加载新的页面时,JavaScript的在该页面可以查看查询字符串,看看是否有特殊的参数传递给它。如果是,那么该Javascript可以解析它们并根据这些查询字符串参数决定要执行的行为。
另一种可能性是不使用window.location
。相反,您可以通过Ajax获取新的HTML,然后在当前页面中使用Javascript将新内容插入当前页面(或用新内容替换现有内容)。使用jQuery,您可以使用jQuery的加载从URL的内容直接放入一个元素在当前页是这样的:
$("#myDiv").load(someURL);
由于这是阿贾克斯,它具有一切正常跨来源的限制,任何Ajax调用可能有这样你不能自由地加载其他网站的页面(除非它们允许跨源访问)。
我倾向于关闭此作为http://stackoverflow.com/questions/12921345/execute-javascript-的副本这个问题本身就是一个重复的问题,而另一个重复问题与这里提出的问题并不完全相同。 – zzzzBov