0

我正在尝试编写一个小书签,它获取用户所在的站点,进行一些解析和 ajax 请求,并以该信息作为参数打开一个新窗口。

这是我所拥有的:

<a href="javascript:
(function($) 
{
  var a, http, options, request, st, u;

  u = document.location.hostname;

  a = u.split('.');

  st = a[a.length - 2];
  path = 'http://ajax.googleapis.com/ajax/services/feed/find?callback=?&v=1.0&q=' + st;
  $.ajax
  ({
    type: 'GET',
    url: path,
    async: false,
dataType: 'json',
success: function(data)
{   
  var targ  = data['responseData']['entries'][0]['url'];
  window.open ('http://localhost:3000/bmfeed?targ='+targ,'menubar=1,resizable=1,width=350,height=250');
}
  });
})(jQuery)

"> newwindow </a>

它找到了正确的 url,但新窗口被弹出窗口阻止程序阻止。

相反,如果我有

<a href='javascript: window.open ("http://localhost:3000?targ=asdfasdf","mywindow","menubar=1,resizable=1,width=350,height=250");'> oneline </a>

它会打开一个不受约束的新标签。我认为不同之处在于我在第一个示例中进行了一些解析,而浏览器不喜欢这些解析。

有没有办法让我的蛋糕也吃掉?非常感谢!

4

1 回答 1

0

我认为不同之处在于我在第一个示例中进行了一些解析

不,问题是异步 AJAX。浏览器在决定是否阻止之前尝试确定用户操作是否启动了新窗口。为了使新窗口无阻塞地打开,用户点击和窗口打开之间必须有一条“直接的行动线”。异步 AJAX 打破了这条直线。(同步 AJAX 可能有效,我不确定。)

有没有办法让我的蛋糕也吃掉?

没有完美的解决方案,但是对您现在的改进是在页面上创建一个弹出式 div,其链接类似于<a href="http://localhost:3000/bmfeed?targ=..." target="_blank">click here to open the new window</a>.

于 2013-06-20T21:57:18.860 回答