Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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_Jquery_Button_Popup - Fatal编程技术网

Javascript 试图阻止我的弹出窗口(需要替换为“window.open”)

Javascript 试图阻止我的弹出窗口(需要替换为“window.open”),javascript,jquery,button,popup,Javascript,Jquery,Button,Popup,我正在使用facebook SDK,由于安全问题,它现在可以通过弹出窗口工作 所以我有一个按钮来处理隐藏的facebook[FacebookButton],还有一个按钮来测试弹出窗口拦截器[PopupTester] 我的代码是这样的 单击[PopupTester]时,如果弹出窗口有效:关闭它,隐藏此按钮,然后显示[FacebookButton] 或 单击[PopupTester]时,如果弹出失败,则显示对话框以敦促更改弹出设置,保持[FacebookButton]隐藏,将此按钮值更改为[重试]

我正在使用facebook SDK,由于安全问题,它现在可以通过弹出窗口工作

所以我有一个按钮来处理隐藏的facebook[FacebookButton],还有一个按钮来测试弹出窗口拦截器[PopupTester]

我的代码是这样的

单击[PopupTester]时,如果弹出窗口有效:关闭它,隐藏此按钮,然后显示[FacebookButton]

单击[PopupTester]时,如果弹出失败,则显示对话框以敦促更改弹出设置,保持[FacebookButton]隐藏,将此按钮值更改为[重试]

function testPopupBlocker() {
  var windowName = 'userConsole'; 
  var popUp = window.open('http://www.whirlocal.com', windowName, 'width=200, height=200, left=24, top=24, scrollbars, resizable');
  if (popUp == null || typeof(popUp)=='undefined') {
    var weGood = "nope";
    alert('Please disable your pop-up blocker and click the link to test again.'); 
  } 
  else {
    var weGood = "yup";
    popUp.close();
  }
}

这很好用,除了这个按钮总是会弹出一个弹出窗口,但是Facebook的那个按钮仍然被阻止

除了“window.open”之外,还有其他方法创建弹出窗口吗?一个更可能被阻止的

编辑:

这是我的按钮代码

<input type="button" class="genButton testPopupButton" name="Test Popup Blocker" title="Test Popup Blocker" value="Test Popup Blocker" onclick="testPopupBlocker()" style="cursor:pointer;" />

<input type="button" class="genButton needsPopups facebookButton" name="AdvocateOnFacebook" title="Recommend <?php echo genesis_get_option('organization','child-settings');?> on Facebook" value="Recommend us on Facebook!" onclick="advocateToFriends()" style="cursor:pointer; display:none;" />


您需要使弹出窗口合法化。它需要由用户启动,而不是任意的弹出代码,否则弹出阻止程序将停止它。一旦你在弹出窗口上有了一个句柄,你可以随意修改它

请尝试以下html代码:

<a href="#" onclick="javascript:window.open('http://myurl.com/blank_page.html','userConsole','width=800,height=600,directories=no,location=no,menubar=no,status=no,toolbar=no,scrollbars=auto,resizeable=yes');">
    <div class="some_div_class"><b>Click Me</b></div>
</a>


然后运行testPopupLocker()函数,看看它是否工作得更好一些。

对不起,我应该说明我的按钮激活了该函数。上面已经对其进行了编辑。没关系,您可以在从单击的dom元素启动window.open后调用该函数。主要的一点是,必须首先从单击的对象调用window.open,从而使其成为合法的弹出窗口。“userConsole”是将其连接在一起的窗口句柄。再次强调,首先合法化弹出窗口,然后在事实发生后用标准JavaScript对其进行修改。因此它仍然不起作用。看这里,facebook的那个被屏蔽了。我“需要”另一个弹出窗口被阻止,以通知用户他们的设置需要更改,但它仍然没有被阻止:/n如果您有一个弹出窗口正在工作,那么为什么不让它为您加载FB代码?一次隔离一个问题。让弹出窗口工作,然后在该窗口中加载FB。