JS Bookmarklet在IE11中不工作
JS Bookmarklet Not Working in IE11
长期潜伏,第一次张贴。
基本的是:
受到这篇博文的启发,我正在尝试为我们的QA团队创建一个bookmarklet来快速填充表单。
bookmarklet在我的机器(TM)上在Chrome, ie10和ie9兼容模式下运行良好。我已经在QA团队的机器上测试了bookmarklet,虽然它在他们的Chrome浏览器和IE 9上运行良好,但在运行IE 11的两台机器上不起作用。
细节:
在两台运行IE 11的机器中,一台是Win 7,另一台是Win 8.1。在win7上运行IE 11的机器更新到IE 11.0.9600.17207IS,并且也可以在Chrome中正确运行书签工具。
我尝试了几个不同的变体,第一个基于上面提到的CSS-Tricks博客文章。
<a href="javascript:
(function(d) {
var body = d.getElementsByTagName('body').item(0);
var script = d.createElement('script');
script.src = 'https://company.siteurl.com/unrelated/DisclosureRegister.js';
body.appendChild(script);
}(window.document));
alert('Bookmarklet js fired!');">Disclosure Register Bookmarklet</a>
第二个,基于StackOverflow响应,如下:
<a href="javascript:
(function(){
var s=document.createElement('script');
s.type='text/javascript';
s.src='https://company.siteurl.com/unrelated/DisclosureRegister.js';
document.getElementsByTagName('head')[0].appendChild(s);
}());">Disclosure Register 2</a>
这两个代码都在我的机器上工作,在前面提到的浏览器中,都不能在其他机器上的IE 11中工作(我没有IE 11,不能直接在我的机器上测试)。
我在开发人员工具的控制台上没有得到错误消息,并且在开发人员工具的文件列表中没有列出disclosure . register .js文件。bookmarklet似乎没有启动。
当我右键单击>属性时,这两个书签都没有Web文档选项卡,然而,我提供给他们的一个简单的javascript警报书签确实有Web文档选项卡,它在所有浏览器(包括IE 11)中都能完美地工作。
<a href="javascript:alert('That tickles!');">Click me!</a>
我通过在Codepen中编写html,通过电子邮件发送到Codepen的直接链接(我没有足够的信誉点来发布链接),并让他们从Codepen 输出拖动链接到他们的浏览器收藏栏。
我发现了一些让我有希望的东西,这是旧版本的IE 11的错误,但是使用的IE版本甚至比修复相关错误的版本更新。
以防万一,在disclosurereregister .js文件中有一些东西导致IE 11中止javascript,我也包括了这个代码:
(function (win, doc, $, undefined) {
//Don't run if jQuery isn't loaded
if (typeof window.jQuery === 'undefined') {
return;
}
alert("Script is being called!");
}(window, window.document, window.jQuery));
:
虽然我当然不排除一个错误与我的代码(当然,请纠正我,如果它是错的),有什么特殊的IE 11在它处理javascript bookmarklet的方式,我需要在代码中考虑?
提前感谢您的时间!
那篇文章是我写的。很高兴你们觉得它很有用。
似乎有一群人在抱怨bookmarklet在IE11中不能正常工作。我要测试的一件事是IE11如何处理同源策略。查看此链接,看看是否可以暂时禁用同源策略。然后测试。
显然它不能解决问题,但它可以引导你往正确的方向。
希望这对你有帮助。
我想我找到了IE11中bookmarklet的问题所在。我刚刚在IE11中添加了一个书签,但它不起作用,所以我开始谷歌并找到了这个页面。然后我在微软自己的网站上找到了bookmarklet,他们实际上推荐使用它,而且它很好用。然后我决定检查语法是否正确,这是我发现问题的地方。由于某些原因,IE通过拖拽方式将长书签添加到工具栏时,会剪切掉它的一部分。我试图添加的bookmarklet比原来少了几个括号,因此语法不正确。然后我手动复制粘贴完整的代码,它开始工作。
我可以通过从bookmarklet代码中删除所有换行符来解决相同的问题。IE 11显然不知道如何处理它们。
在bookmarklet代码中有换行符,添加到"收藏夹"后,属性显示一个空白的URL,点击它时什么也不会发生。
随着换行符的删除(运行一个正则表达式将所有空格折叠成一个空格字符),将其添加到"收藏夹"后,属性在URL字段中显示正确的javascript,当点击时它会正确运行。
我找不到任何地方记录这个限制
- IE11:indexOf()不在一个页面上工作,但在其他页面上工作
- style.display无法在Chrome、Safari-Firefox、IE11中正常工作
- ajax调用在IE11和chrome中无法正常工作
- jqTree 在 IE11 中不执行保存状态工作正常 FF12.
- onunload和onbeforenlad事件在IE11和IIS中未按预期工作
- 媒体打印css无法在IE11打印预览中工作
- onblur功能在IE11中停止工作
- IE11上的全屏html5播放器不工作
- 水平图像滑块无法在chrome和IE11中工作
- window.location.hash在IE11中不工作
- 在ie11中,getAttribute()不能与Sizzle一起工作
- JavaScript RegExp不工作在IE11和工作在Chrome
- window.history.back(),返回false;“不能在IE11中工作
- 定时器功能不工作在ie11使用jscript apex页面
- CSS动画不能在IE11上工作
- 设置主页Js在IE11中不工作
- LESS不能在IE11中工作-为什么
- 为什么这个箭头功能不能在ie11中工作?
- openweathermap api在IE11中不工作
- Arangodbjs查询使用then()不工作IE11