Chrome扩展程序内容脚本注入图像

4
我觉得很蠢问这个问题,但是我无论如何都无法让它工作。
问题的要点:我有一个Chrome扩展程序,其中包含注入的JavaScript弹出式UI内容脚本,嵌入到加载的页面中。用户可以单击Chrome扩展栏中的按钮打开它。在这种情况下,打开意味着使用简单模态弹出窗口取消隐藏并显示。这一切都很好。
然而,当我加载JPG到浏览器中,例如只是在此处http://customersrock.files.wordpress.com/2007/07/bunny.jpg,它仍将内容脚本信息注入页面。仅JPG似乎受到影响。PNG和gif不受影响(尽管我还没有对图像格式进行广泛测试)。但是,由于它是JPG而不是完整的网站,因此注入的内容未被隐藏。它未经设计,只是坐在图像下面,像这样(请原谅这张图片的大小):

Example problem

我的内容脚本匹配如下

 "matches": [ "http://*/*", "https://*/*"],
 "exclude_matches":["*://*.png", "*://*.jpg", "*://*.gif"],

我真的不确定排除匹配是否正确或者是否有效。Chrome是否以一种不同于其他图像格式的方式提供jpg?无论如何,感谢您的帮助!这是一个令人沮丧的问题。

谢谢您的帮助!


2
匹配内容脚本中的 MIME 类型(Content-Type)目前在 Chrome 中是一个未解决的问题:http://code.google.com/p/chromium/issues/detail?id=35070 如果它被修复了,你可以仅匹配 HTML 而不是尝试通过 URL 模式或“扩展名”来排除每种类型。 - Robert
哦,好吧,这肯定解释了为什么我尝试时它不起作用,哈哈。这会让事情简单得多。嗯,感谢你的信息,Robert!虽然这个 bug 似乎很旧了,但我会继续关注的 x_x。 - Weaver
2
可能是重复问题:“exclude_matches”在manifest.json中无效? 简短回答:这是一个已知的错误;尝试使用exclude_globs代替exclude_matches。我不确定它是否适用于您的情况,但值得一试。 - apsillers
1个回答

1

由于这是一个已知的错误,我有一种替代方法来解决这个问题。在你的脚本中加入If语句,像这样:

if (window.location.pathname.split('.jpg') < 1) {
    //
    // Your script here.
    //
}

这将会向 jpg 页面注入脚本,但不会在 if 语句 中运行该脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接