当前位置: 首页 > 知识库问答 >
问题:

JS Bookmarklet在IE11中不起作用

伍皓
2023-03-14

长期潜伏者,第一次海报。

基本原则如下:

受这篇博客文章的启发,我试图为我们的QA团队创建一个书签来快速填充表单。

bookmarklet在Chrome、IE 10和IE 9兼容模式下的my machine(TM)上运行非常完美。我已经在QA团队的机器上测试了bookmarklet,虽然它在Chrome浏览器和IE9上运行良好,但bookmarklet在运行IE11的两台机器上不起作用。

详情:

在运行IE 11的两台机器中,一台在Win7上,另一台在Win8.1上。Win 7上运行IE 11的机器更新为IE 11.0版。9600.17207IS,也将在Chrome中正确运行bookmarklet。

我尝试了几个不同的变体,第一个是基于上面提到的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>

这两个代码都可以在前面提到的浏览器中在我的机器上运行,在其他机器上也不能在IE11中运行(我没有IE11,不能直接在我的机器上测试它)。

我在开发人员工具的控制台和DisclosureRegister中没有收到错误消息。js文件未列在开发人员工具的文件列表中。看来bookmarklet根本没有启动。

当我右键单击时,这些书签都没有网络文档选项卡

<a href="javascript:alert('That tickles!');">Click me!</a>

我通过在CoDepen中编写html来传递书签,通过电子邮件给他们发送到CoDepen的直接链接(我没有足够的信誉点来发布链接),并让他们将链接从CoDepen输出拖到浏览器收藏栏。

我遇到了一些东西,这让我有了希望,那是一个旧版本IE11的bug,但是使用的IE版本甚至比修复相关bug的版本还要新。

以防万一披露登记册上有什么东西。导致IE 11中止javascript的js文件,我还提供了相应的代码:

(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书签的方式有什么特殊之处吗?

提前感谢您的时间!

共有3个答案

高正初
2023-03-14

我能够通过删除书签代码中的所有换行符来解决同样的问题。IE 11显然不知道如何处理它们。

bookmarklet代码中有换行符,将其添加到“收藏夹”后,属性显示一个空白URL,单击它时不会发生任何事情。

删除换行符后(运行正则表达式将所有空格折叠为一个空格字符),将其添加到“收藏夹”后,属性在URL字段中显示正确的javascript,单击时正确运行。

我在任何地方都找不到任何记录这种限制的东西。

关翰
2023-03-14

我想我发现了IE11中书签的问题。我刚刚在IE11中添加了一个书签,但它不起作用,所以我开始谷歌搜索并找到了这个页面。然后我在微软自己的网站上找到了书签,他们实际上推荐使用它,而且它很有效。然后我决定检查语法是否正确,这就是我发现问题的地方。出于某种原因,IE通过拖放将长书签添加到工具栏时会削减部分书签。我的书签,我试图添加是几个括号短的原始,因为语法是不正确的。然后我手动复制粘贴完整的代码,它开始工作。

漆雕升
2023-03-14

那篇文章是我写的。很高兴你们发现它很有用。

似乎有很多人抱怨bookmarklet在IE11中不能正常工作。我要测试的一件事是IE11如何处理同源策略。查看此链接,看看是否可以临时禁用同源策略。然后测试

显然,它不会解决问题,但它可以引导你朝着正确的方向前进。

希望这有点帮助。让我知道。

 类似资料:
  • 导致上述语句中问题的代码

  • 我有一些jQuery在Chrome中工作得很好,但当测试时,它根本不工作。为了帮助解决问题,我创建了一个简单的按钮,其中包含一个非常精简的jQuery版本,应该只显示一个删除按钮。但是,我在控制台中得到一个语法错误,我没有看到警报。 有人看到我错过了什么吗?我正在使用一个CSS类将jQuery代码挂接到按钮上,但我不认为这是一个问题……除非IE不能处理这个问题。

  • 在rmy Angular 6应用程序中,我尝试使用一些GET请求,同时注入一些Headers: 我的服务如下: 在我的组件中:我像以下一样订阅它: 它在 火狐 ,但在 铬 和 IE11 下则不行;我得到了这样的安错误: TypeError:无法读取空node_modules的属性'长度'。/HttpHeaders.push./@角/公共/菲斯姆5/node_modules更新(node_modul

  • 问题内容: 我正在为网格使用以下HTML标记。 SCSS代码如下所示: 由于我在工作流程中使用自动前缀,因此会自动添加所有带有前缀的相关属性。我可以通过检查元素确认。 现在,问题是此代码在Chrome,Firefox和Opera中运行正常,但是当我在MicrosoftEdge或IE11中打开此页面时,所有网格项在第一个单元格处都相互重叠。根据该站点的介绍,这些浏览器支持带前缀的CSS网格布局。我已

  • 我有一些 在量角器中,我们搜索并找到元素,检查文本是否符合我们的期望,然后对该元素调用。测试在Chrome中运行良好,但在IE中就好像没有点击发生一样。破坏了测试。 IE 11是否支持点击

  • 问题内容: 我注意到less.js在firefox中工作,但在Chrome中不工作,或者是因为我出错了吗? 即使我尝试在Chrome中仍然无法使用,我在某个地方犯了错误吗? 问题答案: 通过您提供的链接: 如果您使用的是Chrome,Less.js浏览器脚本当前将无法使用,并且由于已知的Chrome问题,网页的路径以“file:///”开头。