Bookmarklet 适用于除 Firefox 以外的所有浏览器
Bookmarklet works in all browser except Firefox
我有一个小书签,我在其中尝试从远程服务器加载脚本,然后在加载脚本后执行一些代码。下面是一个精简的例子:
(function () {
var url = '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js';
var injectExtensionScript = function (path) {
alert('injectExtensionScript');
var element = document.createElement('script');
element.type = 'text/javascript';
element.src = path;
document.addEventListener('load', function () {
alert('loaded jquery');
}, true);
document.head.appendChild(element);
};
document.head.setAttribute('data-foobar', 123);
injectExtensionScript(url);
})();
(为小书签缩小)
javascript:(function()%7B(function%20()%20%7Bvar%20url%20%3D%20'%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjquery%2F1.9.0%2Fjquery.min.js'%3Bvar%20injectExtensionScript%20%3D%20function%20(path)%20%7Balert('injectExtensionScript')%3Bvar%20element%20%3D%20document.createElement('script')%3Belement.type%20%3D%20'text%2Fjavascript'%3Belement.src%20%3D%20path%3Bdocument.addEventListener('load'%2C%20function%20()%20%7Balert('loaded%20jquery')%3B%7D%2C%20true)%3Bdocument.head.appendChild(element)%3B%7D%3Bdocument.head.setAttribute('data-foobar'%2C%20123)%3BinjectExtensionScript(url)%3B%7D)()%7D)()
将此小书签添加到 Chrome、Safari 和 IE,代码按预期工作——"data-foobar" 属性被添加到文档头部,脚本加载(并且我的事件侦听器触发) .
但是,Firefox 完全是另一回事。脚本出现 运行(没有错误,第一个 alert()
触发...但是 "data-foobar" 属性 not 添加到文档头,脚本也从未加载过(网络选项卡从不记录请求,并且事件侦听器从不触发)。
我不认为这是与 Bug 866522 - Bookmarklets affected by CSP 相同的错误,因为我正在尝试的网站没有使用 CSP。
有什么想法吗?
规格:OSX 10.10.2,Firefox 39。标准设置,除了:
*我阻止弹出窗口,
* 不跟踪,
*永远不要记住历史,
* 当网站尝试安装附加组件时警告我
* 阻止报告的攻击站点
* 阻止报告的网络伪造
* 未设置为我的默认浏览器
* Flash 未安装
事实证明,选中复选框 "Load this bookmark in the sidebar" 似乎是问题所在。我不知道那是怎么发生的。
我有一个小书签,我在其中尝试从远程服务器加载脚本,然后在加载脚本后执行一些代码。下面是一个精简的例子:
(function () {
var url = '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js';
var injectExtensionScript = function (path) {
alert('injectExtensionScript');
var element = document.createElement('script');
element.type = 'text/javascript';
element.src = path;
document.addEventListener('load', function () {
alert('loaded jquery');
}, true);
document.head.appendChild(element);
};
document.head.setAttribute('data-foobar', 123);
injectExtensionScript(url);
})();
(为小书签缩小)
javascript:(function()%7B(function%20()%20%7Bvar%20url%20%3D%20'%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjquery%2F1.9.0%2Fjquery.min.js'%3Bvar%20injectExtensionScript%20%3D%20function%20(path)%20%7Balert('injectExtensionScript')%3Bvar%20element%20%3D%20document.createElement('script')%3Belement.type%20%3D%20'text%2Fjavascript'%3Belement.src%20%3D%20path%3Bdocument.addEventListener('load'%2C%20function%20()%20%7Balert('loaded%20jquery')%3B%7D%2C%20true)%3Bdocument.head.appendChild(element)%3B%7D%3Bdocument.head.setAttribute('data-foobar'%2C%20123)%3BinjectExtensionScript(url)%3B%7D)()%7D)()
将此小书签添加到 Chrome、Safari 和 IE,代码按预期工作——"data-foobar" 属性被添加到文档头部,脚本加载(并且我的事件侦听器触发) .
但是,Firefox 完全是另一回事。脚本出现 运行(没有错误,第一个 alert()
触发...但是 "data-foobar" 属性 not 添加到文档头,脚本也从未加载过(网络选项卡从不记录请求,并且事件侦听器从不触发)。
我不认为这是与 Bug 866522 - Bookmarklets affected by CSP 相同的错误,因为我正在尝试的网站没有使用 CSP。
有什么想法吗?
规格:OSX 10.10.2,Firefox 39。标准设置,除了: *我阻止弹出窗口, * 不跟踪, *永远不要记住历史, * 当网站尝试安装附加组件时警告我 * 阻止报告的攻击站点 * 阻止报告的网络伪造 * 未设置为我的默认浏览器 * Flash 未安装
事实证明,选中复选框 "Load this bookmark in the sidebar" 似乎是问题所在。我不知道那是怎么发生的。