3

我正在使用 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;" />
4

1 回答 1

0

您需要使弹出窗口合法化。它需要由用户启动,而不是任意弹出代码,否则弹出窗口阻止程序会阻止它。一旦您掌握了弹出窗口的句柄,您就可以随意修改它。

试试这个 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>

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

于 2012-06-21T20:06:13.563 回答