以下代码
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加载事件。我不想覆盖它。
答案 0 :(得分:0)
什么时候执行window.location.href = url?
非常接近立即。它告诉浏览器启动加载新页面的过程。当前页面及其上的代码将继续运行,直到新页面开始加载。更多信息如下。
我希望将
$(window.document.body).append(compiledTemplate);
添加到将要打开的新页面上。
你做不到。当前页面中的代码无法在下一页上执行操作。要在下一页上执行操作,您必须将代码放在那个页面中。
您最好的选择是以其他方式将当前页面供应信息提供给新页面:
...然后在 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取代。此时,旧页面的代码已终止。它对新页面无能为力。