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

Javascript 为什么twitter bookmarklet不会被弹出窗口拦截器阻止?,javascript,popup,bookmarklet,window.open,Javascript,Popup,Bookmarklet,Window.open,检查此链接。 将bookmarklet拖到书签栏并单击它。它将打开一个弹出窗口 为什么我的firefox/ie/chrome没有阻止这个 谢谢 javascript: function loadScript(scriptURL) { var scriptElem = document.createElement('SCRIPT'); scriptElem.setAttribute('language', 'JavaScript'); scriptElem.setAtt

检查此链接。

将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");
}

bookmarklet通常不会被浏览器的弹出窗口拦截器阻止,您是有意调用它的……因此,这可能是您想要的弹出窗口,因为您首先添加了bookmarklet。

通常弹出窗口拦截器不会阻止弹出窗口。一般来说,它们只阻止应该在没有任何用户操作的情况下打开的弹出窗口。如果使用bookmarklet,则情况并非如此,因为用户在弹出窗口打开之前选择bookmarklet。当使用bookmarklet时,它可能不会被弹出窗口拦截器观察到,正如Nick所说(我认为没有必要,bookmarklet应该是可信的)


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

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

谢谢您的回答。我写了这个类似于twitter的书签。更新了我的帖子。如果我运行此操作,浏览器将阻止弹出窗口。嗨。。谢谢你的评论。我已经更新了我的帖子。我添加了bookmarklet代码,可以打开一个弹出窗口,但是被browserI阻止了。我无法告诉你具体的阻止方式(因为有很多阻止程序,每个人都可能有自己的行为)。所以我猜:这不取决于时间,您的示例将不直接打开弹出窗口,它首先必须加载一些资源(我尝试了一个简单的超时,这不包括指令。被阻止)。我认为,这是一个访问指令的问题。bookmarklet和打开弹出窗口的函数之间没有直接的上下文(调用函数的指令稍后会随加载的脚本一起出现,因此我认为它不再受信任)。请详细说明内存问题。我在你的网页上没有看到它。