window.location.href = url什么时候执行?

时间:2015-01-28 10:58:18

标签: javascript jquery load append window.location

以下代码

window.location.href = url;
$(window.document.body).append(compiledTemplate);

我想在现有窗口中使用$(window.document.body).append(compiledTemplate); to be appended on the new Page which will get opened, but it appends the compiledTemplate`然后加载指定的网址

有没有办法做到这一点。 ?

注意:要传递的url已经定义了Form加载事件。我不想覆盖它。

1 个答案:

答案 0 :(得分:0)

  

什么时候执行window.location.href = url?

非常接近立即。它告诉浏览器启动加载新页面的过程。当前页面及其上的代码将继续运行,直到新页面开始加载。更多信息如下。

  

我希望将$(window.document.body).append(compiledTemplate);添加到将要打开的新页面上。

你做不到。当前页面中的代码无法在下一页上执行操作。要在下一页上执行操作,您必须将代码放在那个页面中。

您最好的选择是以其他方式将当前页面供应信息提供给新页面:

  • 通过查询字符串参数
  • 通过本地存储或会话存储
  • 通过cookie(blech)

...然后在 new 页面上添加代码追加内容。


如果你这样做是为了回应用户生成的事件,你可能会这样做:

var wnd = window.open(url);
$(wnd).load(function() {
    $(this).append(compiledTemplate);
});

...但是它会打开 new 页面中的URL(可能是一个新标签页)并保持当前窗口打开,它只适用于同一来源的页面。


例如,如果您在页面上显示此内容:Live Example

<input type="button" id="the-button" value="Click">
<script>
  (function() {
    "use strict";

    $("#the-button").click(function() {
      var counter = 1;

      location.href = "http://stackoverflow.com";
      $("<p>Set, counter = " + counter + "</p>").appendTo(document.body);
      setInterval(function() {
        ++counter;
      $("<p>Counter = " + counter + "</p>").appendTo(document.body);
      }, 50);
    });
  })();
</script>

当您点击该按钮时,您会在行设置location.href之后看到代码,显示“Set,counter = 1”,然后可能还有几个“counter = x “行,然后最终页面将被Stack Overflow取代。此时,旧页面的代码已终止。它对新页面无能为力。