【问题标题】:Does AdBlock change how Chrome renders pages?AdBlock 是否会改变 Chrome 呈现页面的方式?
【发布时间】:2010-10-25 10:13:17
【问题描述】:

我正在设计/构建一个网站,并且像一个优秀的小开发人员一样,我一直在关注所有流行浏览器中的呈现方式 - 当前版本的 Firefox、Chrome、Safari(适用于 Windows)和 Chrome和 Internet Explorer(8,而不是 9 预览版)。

无论如何,在我看来,Chrome 中的一切都很好,但我的一位一直在给我一些反馈的朋友告诉我“哦,顺便说一句,你的网站在 Chrome 中呈现得非常糟糕。”我给了他标准的“在我的机器上工作”的回答,他回答说他认为这一定是扩展问题。

他给了我一份他使用的流行扩展的简短列表,经过反复试验,我发现问题出在 AdBlock 上。我不会对实际渲染问题的细节感到厌烦,但我们注意到了一些奇怪的事情。并不是 AdBlock 阻止了页面上的某些内容,而是 Chrome 中 AdBlock 的存在导致了问题。我知道这一点,因为即使 a) 我暂停 AdBlock,并且 b) 当我明确排除该页面/网站被 AdBlocked 排除时,问题仍然存在。

我已经解决了这个问题(我之前在 Firefox 3.0“BrowserShot”中注意到它,但只修复了 FireBug 中的错误 - 我还没有将它应用到真实副本),但它已经离开了我想知道是否还有其他我应该注意的问题。

这似乎也不是怪癖与标准模式的问题。 document.compatMode 仍然显示“CSS1Compat”(标准模式),当我删除 doctype 定义以触发 quirks 模式时,网站仍然可以正确呈现(尽管在某些地方更改了一些填充 - 无需担心)。

以前有人注意到这个问题吗? AdBlock 是否会从根本上改变 Chrome 呈现页面的方式,即使它在特定网站上不活跃?


编辑#1:

它变得更奇怪了。我试图创建一个示例,但由于某种原因它不会正确呈现。最终,我将原始(即失败的)html 复制到一个新文件中,并将整个 CSS 文件放入文档的 <head> 中的 <style> 标记中。它仍然有效。

经过反复试验,我确定只有通过 <link rel="stylesheet"> 包含 css 而不是通过<style> 包含 css 时才存在问题。

有人可以解释一下这里发生了什么吗?


编辑#2:

这是我正在使用的代码:

HTML:

<!DOCTYPE html>
<html>
  <head>
    <title>Demo</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
    <div id="outer">
      <img src="placeholder.png" width="150px" height="150px" />
      <div id="inner">
        <h1>Test</h1>
        <p>Lorem ipsum blah blah blah</p>
      </div>
    </div>
  </body>
</html>

 

CSS:

    #outer {
      border: 1px solid #000;
      width: 700px;
    }

    #inner {
      float: right;
      width: 540px;
    }

如果您想亲自尝试一下,我已经在我的服务器上放了一些文件:

【问题讨论】:

    标签: google-chrome rendering google-chrome-extension adblock


    【解决方案1】:

    在修改 css 后 Chrome 重排内容的方式似乎存在问题 - 您可以按照以下步骤重现完全相同的渲染:

    1. 禁用 Adthwart,重新加载 chrome。
    2. 加载页面(两者之一)。
    3. 进入 Chrome 检查器 - 选择 div#inner 元素。
    4. 停用,然后重新激活 float: right; CSS 属性。

    如果不存在错误报告,最好提交错误报告 - 它是 WebKit 或 Chrome 错误。

    【讨论】:

    • 该死的。我刚刚用 adblockforchrome 完成了一份报告。我想我将不得不提交另一个文件。任何想法a)为什么这仅在安装adblock时发生,以及b)为什么它只发生在&lt;link&gt;而不是&lt;style&gt;
    • 看起来这是 webkit,而不仅仅是 chrome。我在 safari 上使用了 firebug lite bookmarket 并且能够复制它。
    • 这是我的猜测:b) 对于&lt;link&gt;,CSS 属性必须在http 请求之后加载,而对于&lt;style&gt;,这些CSS 属性可以立即用于WebKit; a) Adblock 通过添加 CSS 样式进行操作 - 我猜在 Adblock/&lt;link&gt; 的情况下,首先加载 Adblock CSS,然后加载 &lt;link&gt; CSS,这会触发错误。 (在其他 3 种情况下,&lt;link&gt;&lt;style&gt; CSS 在任何其他情况下加载。)请在提交错误报告时添加链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2023-03-20
    • 2023-01-29
    • 1970-01-01
    相关资源
    最近更新 更多