【发布时间】:2012-05-24 05:11:49
【问题描述】:
我正在开发一个网站,并且正处于一个美妙的阶段,在 Chrome、Safari、Firefox(Windows 和 Mac 版)中一切正常,然后你需要额外花 24 小时为 IE 修复它。
我已经为此苦苦挣扎了很久,但最后发生的事情是一个变量在 IE7 中总是“未定义”。
它来自一个名为 data-title 的 html5 数据属性。
我环顾四周,也尝试了this 和this stackoverflow 问题中提供的解决方案。
所以,我试过了
$(this).attr('data-title');
和
$(this).data('title');
关于最后的解决方案
var newTitle = $(this).getAttribute("data-title");
我收到一个错误:
Uncaught TypeError: Object [object Object] has no method 'getAttribute'
问题是,我无法使用 getElementById 加载变量,因为元素是由 jQuery Maximage 生成的
生成的元素如下所示:
<div class="mc-image collection-image" title="" style="background-image: url(http://www.server.com/image.jpg); position: absolute; top: 0px; left: 0px; z-index: 12; opacity: 1; display: block; width: 1292px; height: 670px; " data-title="The&nbsp;Title" data-href="#collection-description-172"></div>
我正在使用data-title 属性在maximage/jQuery 循环更改图像时将文本设置在侧面的另一个div 中。
我完全不知所措。
【问题讨论】:
-
仅供参考,IE7 不是 HTML5 浏览器,因此可能与属性问题有关。我不是 100% 确定 IE7 如何处理非标准属性。话虽如此,我不再支持 IE7。使其工作所需的输入量少于输出量,因为只有不到 2.3% 的人仍在使用 IE7!来源:w3schools.com/browsers/browsers_explorer.asp 或者换个角度看,97.7%的人没有使用IE7。
-
@jmort253 感谢您提供信息。我同意,当时支持 IE7 实际上并不那么重要,所以我将浏览器升级到 IE8,但不幸的是,变量仍然是未定义的。任何想法如何进行调试?我试过调试栏,但它没有抛出任何错误。
-
如果你为 $(this) 添加一个手表并检查它会发生什么?里面有什么?只是为了检查你的选择器是否让你进入提到的代码是正确的......
-
@Jeroen 在下面的 cmets 中,我设置了 Debugbar/companionJS 并看到
$(this).html()正在提供图像<IMG style="MARGIN-TOP: -268px; WIDTH: 1359px; HEIGHT: 849px; MARGIN-LEFT: 0px" src="http://server.com/image.jpg" width=1600 height=1000 data-custom-title="test">当我将其扔进 jsbin 并尝试读取它的数据属性时有效,所以我真的无法理解为什么它不能在实时站点上使用相同的源代码! -
恐怕唯一剩下的就是为 SO 的同胞创建一个小而有效(可重现)的场景。一点一点地修剪现场,直到你有一个最小的样本,然后把它贴在这里。否则我们将很难为您提供帮助。
标签: javascript jquery internet-explorer