Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.open影响网页_Javascript_Html_Window.open - Fatal编程技术网

Javascript window.open影响网页

Javascript window.open影响网页,javascript,html,window.open,Javascript,Html,Window.open,我有一个使用window.open打开新窗口的链接。弹出窗口工作正常,但是普通网页停止加载对象、图像、脚本、ajax脚本,有时甚至根本不加载页面 这是我的密码: MyWindow=window.open('player.php','Player','width=500','height=300'); return false; 我做错什么了吗 谢谢, Peter尝试将代码包装在SetTimeout中 setTimeout(function () { window.open( .. )

我有一个使用window.open打开新窗口的链接。弹出窗口工作正常,但是普通网页停止加载对象、图像、脚本、ajax脚本,有时甚至根本不加载页面

这是我的密码:

MyWindow=window.open('player.php','Player','width=500','height=300'); return false;
我做错什么了吗

谢谢,
Peter

尝试将代码包装在SetTimeout中

setTimeout(function () {
    window.open( .. )
}, 0);

正如您可能知道的,JavaScript是。每个事件都会排队,直到有空闲时间执行为止。 在window.open的情况下,两个窗口必须共享一个上下文以保持线程安全,因为打开的窗口可以使用window.opener访问其父窗口。 我不知道浏览器是如何实现它的,但我们可以猜测两种可能性:

空闲时间在两个窗口之间共享。这意味着如果弹出窗口执行许多阻塞语句,它可以冻结主窗口的事件。 两个窗口中只能有一个处于活动状态,这取决于哪个窗口具有焦点。在这种情况下,当您使用弹出窗口时,所有事件都可能在主窗口中暂停

如果你想要一个更精确的答案,我需要你的代码的更多细节


首先,请更具体一些:告诉我们更多关于您的浏览器、版本以及可能的操作系统的信息。它可能更多地与浏览器相关,而不是与web内容相关

然后讨论可能出现的问题;你先说我有一个链接

对我来说,这听起来像你用的。也许吧

我在一些现代浏览器中尝试了这两种浏览器:ChromeV37,即v11。两种浏览器都没有生成您所描述的内容: -ChromeV37将很高兴地继续加载,即使我立即点击一个窗口; -IE v11会显示错误,这很奇怪,但仍然不是你得到的。 在某些情况下,我还需要处理弹出窗口拦截器

一般的提示可能是不要用于这样的事情。不同浏览器的行为似乎不一致,而且现在有更好的选择,例如。。。和或者使用JQuery或其他我不太了解的框架


虽然这不是一个结论性的答案,但也许这可以帮助你自己进行实验,并思考可能的原因或其他做事方式。

你描述的行为肯定不会正常发生。robbmj的JSFIDLE证实了这一点,它未能再现问题。这表明主页上发生了一些事情,而不是普通的页面加载,或者你的链接打开有一些不寻常的地方。除了语法错误之外,您还使用了四个参数,而不是三个

document.addEventListener("DOMContentLoaded", function () {
      //whatever the code
      MyWindow=window.open('player.php','Player','width=500','height=300'); return false;
}, false);
由于您没有提供关于这两点的信息,如何加载主页?如何触发弹出的打开代码?我们甚至不知道是否有问题 可能与浏览器相关;我会开始尝试在IE、Chrome和Mozilla中进行测试,以了解 是否有任何变化;这可能会提供一些有用的见解

一种可能性 很有可能是您无意中的第四个参数进入了window.open replace参数,它是一个布尔值,会触发未定义的行为或只是一个停止一切的错误。你应该让一些东西在IE中工作,而不是在Firefox中工作

通过使用Firefox和Firebug扩展,或者使用Chrome中的Web开发人员控制台,您也应该能够看到这种情况

另一种可能性 一种更深奥的可能性是,您定义链接的方式可能会使浏览器认为您实际上已移动到另一个页面,因此继续加载当前页面没有意义。根据浏览器的不同,这可能与链接的定义方式有关,并且可以通过其他方式对其进行定义来进行修正

例如,如果你有

<a href="javascript:openPopup();">...</a>
变通办法 一个可能可以接受的解决方法是完全禁用链接或通过CSS隐藏链接,并且只有在主文档准备就绪时才重新激活/显示链接。这回避了问题,即使用户体验可能会因为更长的等待时间而变得更糟


<>但是如果用户在等待整个页面加载之前很可能点击链接,我也会考虑不自动加载页面的其余部分,并重新组织信息以提供更简化的导航。或者把它分为两页。同样,遗憾的是,您没有提供足够的信息来完成猜测以外的工作。

显然发生的事情比您提供的阻止主页运行的一行代码还要多。创建一个JSFIDLE.net示例。您的问题中确实没有给出足够的信息。不幸的是,StackOverflow不允许用户投票关闭具有活动奖金的问题,但如果是这样,我会投票关闭此问题,原因是:问题寻求调试帮助为什么此代码不起作用?必须包括所需的行为、特定的问题或错误以及所需的最短代码
在问题本身中复制它。没有明确问题陈述的问题对其他读者没有用处。否则,我无法复制您的问题。我无法告诉您发生此问题的原因,但一个可能的快速而肮脏的修复方法可能是在打开弹出窗口后自动重新加载页面。。。如果它被锁定在某个循环或其他什么东西中,那么它可能会被释放。为什么这个问题会得到选票?它应该关闭,因为不清楚你在问什么。看答案,我们好像在玩猜谜游戏。这个问题写得很糟糕,即使在给出了一些建议以提供更多的上下文之后。我希望有一个方法来做删除这些问题有点浪费时间!不应更改任何内容:请注意,远程URL不会立即加载。返回window.open时,窗口始终包含大约:空白。URL的实际获取被延迟,并在当前脚本块完成执行后开始。-你不能指望超时@因为jQuery是一个JavaScript库。使用jQuery所能做的一切都可以通过纯JavaScript实现。@GuyT,没错。这就是为什么我在你之前的文章中找不到逻辑。它没有提到OP说我有一个链接,可以使用window.open打开一个新窗口。问题是因为弹出内容有一个ajax请求,每10毫秒一次,而它应该是每10秒一次。它占据了整个网络。无论如何,你的答案是最详细的,所以我把它标记为正确的:
<a href="javascript:openPopup();">...</a>
<a href="#" onclick="return openPopup();">link</a>


function openPopup() {
    MyWindow = window.open('player.php', 'Player', 'width=500, height=300');

    // Also try the following. You won't probably like the results (it should send the
    // popup window behind), but if it works, it proves we're dealing with a browser
    // issue there.

    // Blur and refocus
    // MyWindow.blur();
    // window.focus();

    // Just focus
    // window.focus();

    return false;
}