为什么twitter bookmarklet不被弹出窗口拦截器阻止?

时间:2010-10-28 23:43:46

标签: javascript popup bookmarklet window.open

检查此链接。 http://dev.twitter.com/pages/share_bookmarklet

将书签栏拖到书签栏并单击它。它会打开一个弹出窗口。

为什么我的firefox / ie / chrome没有阻止这个?

由于

javascript: 
function loadScript(scriptURL) {
    var scriptElem = document.createElement('SCRIPT');
    scriptElem.setAttribute('language', 'JavaScript');
    scriptElem.setAttribute('src', scriptURL);
    document.body.appendChild(scriptElem);
}
var url = 'http://api.bit.ly/shorten?version=2.0.1&login=tweetthees&apiKey=Rxyz&longUrl=' + document.location;
var longUrl = document.location;
loadScript(url + '&callback=tweetme');
function tweetme(json) {
    var shortLink = json.results[longUrl].shortUrl;
    var finalUrl = 'http://twitter.com/home?status=Reading: ' + document.title + ' ' + shortLink;
    window.open(finalUrl, "Share link", "width=1024,height=400,location=1,status=1,scrollbars=1");
}

3 个答案:

答案 0 :(得分:6)

通常,弹出窗口阻止程序不会阻止弹出窗口,它们只会阻止应该在没有任何用户操作的情况下打开的弹出窗口。如果您使用bookmarklet,则不是这种情况,因为用户在弹出窗口打开之前选择了bookmarklet。当使用书签时,可能会被弹出窗口阻止程序观察到,就像Nick说的那样(我认为没有必要,应该信任书签)。

但是在网页中,如果在点击事件后调用该函数,则此弹出窗口也不会被阻止。

答案 1 :(得分:1)

Bookmarklet通常不会被浏览器的弹出窗口阻止程序阻止,你故意调用它....所以它是你想要的弹出窗口,大概是,因为你首先添加了书签。

答案 2 :(得分:1)

首先,通常不会阻止作为对用户操作的响应而创建的弹出窗口。顺便说一下,标准的twitter书签可能不会释放内存,所以我建议使用增强的twitter bookmarklet它允许在任何页面上选择文本并将其发布到Twitter。更重要的是它释放为弹出窗口分配的内存。