.browser文件目标浏览器匹配顺序

时间:2010-07-15 14:06:51

标签: asp.net-2.0 cross-browser

我需要让我的网站与Chrome兼容。我有TextBox控件适配器,匹配所有浏览器(refID ='default'),不幸的是它打破了chrome中的页面。最简单的解决方案是继续为除chrome之外的所有浏览器使用旧适配器。我的.browser文件如下所示:

<browsers>
      <browser id="Chrome" parentID="Safari1Plus">
        <identification>
          <userAgent match=".+Chrome/(?'version'(?'major'\d+)\.(?'minor'\d+\.\d+).\d+)" />
        </identification>
        <capabilities>
          <capability name="browser" value="Chrome" />
          <capability name="majorversion" value="${major}" />
          <capability name="minorversion" value="${minor}" />
          <capability name="version" value="${version}" />
        </capabilities>
        <controlAdapters >
          <adapter controlType="System.Web.UI.WebControls.TextBox" adapterType="ChromeTextBoxControlAdapter" />
        </controlAdapters>
      </browser>

      <browser refID="Default">
        <controlAdapters>
          <adapter controlType="System.Web.UI.WebControls.TextBox" adapterType="TextBoxControlAdapter" />
        </controlAdapters>
      </browser>
    </browsers>

为了测试purpouses我设置TextBoxControlAdapter只渲染'DEFAULT'文本,ChromeTextBoxControlAdapter只渲染'CHROME'文本。

  • 目前,所有浏览器都会打印DEFAULT来代替文本框。
  • 如果我在默认浏览器部分中注释掉适配器标记,则chrome会显示CHROME,其他浏览器会呈现常规的ASP.NET文本框。
  • 我绝不会让Chrome渲染Chrome和所有其他浏览器DEFAULT。

是否可以通过这种方式配置自适应渲染?

由于

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,根据我的初步调查,我认为“浏览器refID”节点不会继承“浏览器ID /父ID”节点之类的设置。

似乎.NET只应用来自匹配的第一个 refID 节点的信息,然后忽略其余的信息。匹配顺序是从根(即ID =“默认”)到更具体(例如ID =“IE8”)。

connect.microsoft.com 上有一个相关的错误,它支持这个理论。 link

我的建议是仅将自定义设置应用于 refID 没有任何祖先的节点。

不幸的是,这意味着您必须复制更多配置并处理代码中的默认值。