3

加载带有 window.location.assign 的页面后是否可以调用 javascript 函数?我有这个代码。

<script language="javascript" type="text/javascript">
function Loadspirit(){
  window.location.assign("spirituality.php");
  ReadEnglish();
}
</script>

我加载页面,然后调用 ReadEnglish(),这是一个在 spiritity.php 中定义的函数。该函数不执行。使函数执行的方法是什么?

4

3 回答 3

5

一旦您分配了一个新的 window.location,浏览器就会开始在当前浏览器窗口中加载一个新页面。这将停止执行此窗口中的所有 javascript 并开始加载新页面。从那时起,只有新页面中的 javascript 才会运行。如果您在加载新页面后需要一个函数,则必须将该代码放入新页面中。如果希望该功能始终在新页面中运行,您只需将新页面中的代码设置为在页面加载时始终运行该功能。

如果您只希望该新函数在从该特定上下文调用时在新页面中运行,那么您需要将一些信息传递给新页面,并且新页面中的代码需要查找该信息以决定是否运行ReadEnglish() 函数与否。您可以将信息传递到新页面的典型方式是

  1. URL 中的查询参数(URL 中 ? 标记后的项目,如“?run=English”)。
  2. cookie 中设置的信息
  3. 新页面已知且位于同一来源的其他窗口/框架中的 Javascript 变量。

如果这不是持久设置,而是在特定时间偶尔执行此选项,则通常使用查询参数。

如果这是一个更持久的设置,则通常使用 cookie,因为 cookie 可以持续存在,直到您告诉它消失为止。

于 2011-07-08T17:26:08.420 回答
1

我不认为你能做到这一点。您最好的选择是使用jquery库,然后执行以下操作:

$("body").load("spirituality.php", function() {
    ReadEnglish();
});
于 2011-07-08T17:17:18.010 回答
0

不,JavaScript 过去window.location.assign永远不会被阅读。这个函数实际上让你离开页面并导航到参数。

如果您想留在当前页面上并可以访问某些 javascript,spirituality.php则需要通过 AJAX 加载它。如果您实际上是在尝试导航到 'spirituality.php' 并加载ReadEnglish();,则需要调用该函数spirituality.php

于 2011-07-08T17:21:37.583 回答