<link>
一旦DOM准备好,我就会动态地向头部添加元素.但是,我在IE8和IE7中得到了不一致的结果(所有其他浏览器都很好).
每次加载(缓存或未缓存)页面时,IE 7/8都会在样式表中删除一些CSS规则.我的动态样式表中的1或2个不会加载.它总是与IE倾向于忽略的1或2个样式表相同 - 即使开发人员工具栏将它们显示为添加到头部!.
样式表本身<link>
在最终DOM中显示为元素,但是它们的一些规则未应用(尽管每次重新加载它们都没有任何问题).
在我的位置,我没有从<head>
(CMS限制)编写代码的奢侈- 我只能从身体动态插入,这可能是问题.
更新:这是我正在使用的代码(位于其中<body>
)以插入样式表:
document.observe('dom:loaded', function() { // Using Prototype.js
// Add stylesheets
// addStylesheet('cite.css', 'head'); // Contains no webfont/@font-face rules
// addStylesheet('type.css', 'head'); // Contains webfont family name references*
// addStylesheet('flex.css', 'head'); // Responsive rules with @media queries
// addStylesheet('anm8.css', 'head'); // Some minor positional CSS for home page
// addStylesheet('gothic-cite.css', 'head'); // *Contains @font-face config
// addStylesheet('stag-cite.css', 'head'); // *Contains @font-face …
Run Code Online (Sandbox Code Playgroud) 以下在所有其他浏览器中都可以完美运行(据我所知):
document.documentElement.innerHTML = "<head></head><body>Testing</body>";
Run Code Online (Sandbox Code Playgroud)
但是在 IE 中卡住了(我测试了 IE9),出现控制台错误:
SCRIPT600: Invalid target element for this operation.
Run Code Online (Sandbox Code Playgroud)
...引用上面代码行的第一个字符。
为什么这不能在 IE 中工作,但可以在所有其他浏览器中工作?我在某处读到了innerHTML
替换“TBODY”元素有问题的地方,但我在删除所有 TBODY 子项后测试了这行代码,并发生了同样的错误。
我知道这听起来像是坏消息代码,但它是我们被迫使用的非常有限且简单的 CMS 网站的唯一选择。我只感谢 CMS 允许执行脚本。
本质上,我需要能够完全消化 HTML 内容并使用我自己的内容。同样,这在其他浏览器上运行良好。
其他注意事项:
prototype.js
库(在我运行此代码之前它已经加载了)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
prototype.js
动态添加两个div
完整的内容当我在我的PHP代码中使用oembed URL $video->width
并$video->height
从我上传的视频中提取时,我得到的值与我看到的与Youtube视频相关的任何内容都不匹配.
上传到Youtube的原始视频尺寸:640 x 336
oembed返回:480 x 270
从Youtube页面UI分享时最小的嵌入选项:560 x 316
有谁知道oembed在哪里获得这些价值?为什么默认为480?有没有办法获得真正的视频尺寸,或者最低限度突破640 x [proportional_height]
?
我的目标是在嵌入我的网站时保留视频的原生尺寸(无缩放),而用户实际上无需再次键入视频尺寸.