【问题标题】:em dash in Internet Explorer 7 [closed]Internet Explorer 7中的破折号[关闭]
【发布时间】:2013-03-15 18:43:03
【问题描述】:

有谁知道如何让 em dash 出现在 IE7 中?

我曾尝试使用IE9.js 文件,但它似乎不起作用。

有人有什么想法吗?

【问题讨论】:

  • 以目前的形式,这个问题没有意义。在 IE 7 中,em dash 没有特别的问题。从 cmets 看来,您真正的问题可能与生成的内容有关。请编辑问题以反映实际问题。

标签: html css internet-explorer internet-explorer-7


【解决方案1】:

为什么不能直接打出来?

在 HTML 中:

— or —

在 CSS 中:

content:"\2014"

【讨论】:

  • 我必须通过 css 导入它来使其工作。 div#algemene_informatie h2:after{ content: ' — ';
  • 我刚刚编辑了我的答案,它回答了你的问题:)
  • IE7 不支持生成的内容。
  • AFAIK,Modernizr 只是 检测 特性,但不填充它们(唯一的例外是内置的 HTML5Shiv)。
  • Polyfilling 生成的内容需要对样式表进行完整的脚本解析。与浏览器的原生 CSS 解析器相比,这样的解析不仅会很慢,而且还会导致与此类解析器的可能不一致相关的重大问题。最好放弃对 IE7 的支持,至少在生成 em dash 等无关紧要的方面,或者使用我在回答中描述的涉及生成真实元素的快速直接的 JS 解决方法。
【解决方案2】:

在 CSS 中:

// Support IE7, which doesn't support :before pseudo selectors
*zoom: expression(
  function(t) {
    t.runtimeStyle['zoom'] = '1';
    t.innerHTML = "— " + t.innerHTML;
  }(this)
);

【讨论】:

  • 考虑到 IE 表达式功能是非标准/无效的。
  • 我不能将 Modernizr 与生成内容的自定义构建一起使用吗?如果是,我将如何调整我的 CSS 选择器?
  • Modernizr 不会自动对生成的内容进行 polyfill 支持……它只会告诉您支持存在或不存在。 IE9.js 填充了这个能力,但是如果你想避免添加 IE9.js,这个 CSS 可以代替。 @MaratTanalin,是的,它是非标准/无效的,并且仅在 IE7 中进行评估(属性名称前的 * 可防止该属性被其他浏览器评估)。是的,这是一个 hack,但它是一个 hack,在你的 CSS 中只需要 6 行而不是添加整个库作为 polyfill。
【解决方案3】:

对于8以上版本的IE,通过JavaScript生成真实元素,使其包含与:before/:after生成的伪元素内容等价的真实内容:

var example = document.getElementById('example'),
    span    = document.createElement('span');

span.innerHTML = '—'
example.appendChild(span);

然后附加span 元素,其样式与您的:before/:after 生成的伪元素相同。

顺便说一下,考虑放弃对 IE7 等古老 IE 版本的支持。实际上,是时候考虑放弃对 IE8 的支持了。 ;-)

【讨论】:

  • +1 表示放弃 IE7 支持,尽管我为大公司工作的大多数项目仍然带有“IE7 支持”规定。真烦人,但我认为这是因为很多军团仍然在运行 XP,而一些 IT 部门一直很懒惰 :-p 虽然这不是世界上最糟糕的要求……至少它不是 IE6 :-p
猜你喜欢
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
相关资源
最近更新 更多