6

我在 jQuery 中动态创建一个对象元素,以呈现一些内容。它适用于除 IE8 以外的所有浏览器。

编码:

    j$(document).ready(function(){ 
        j$('.objContainer').html(j$('<object>').attr(
                            {'data':'http://www.stackoverflow.com',
                             'type':'text/html'}));
    });

执行后创建的 HTML 结构(在 IE8 中):

    <object type="text/html"></object>

在其他浏览器[IE9、Firefox、Chrome]:

    <object data="http://www.stackoverflow.com" type="text/html"></object>

有什么解决办法吗?

4

3 回答 3

3

对我有用:使用 IE8 开发人员工具,我可以看到数据属性。这是一个截图

(我知道我不应该说出来,但是:您需要确保您允许脚本运行。)

于 2013-05-03T22:27:37.663 回答
1

正如您在此处看到的, IE不支持数据(数据集) 。 您可以做的是将数据重命名data-foo并且由于 jquery 本身的特殊处理, 即使在IE中也可以使用。这是一种绕过IE数据集限制的方法。
then $(..).data("foo")

于 2013-05-03T22:24:56.980 回答
1

它应该可以正常工作,尽管我建议您使用 $.data() 方法

http://api.jquery.com/jQuery.data/

它更安全,并且 jQuery 确保在通过 jQuery 方法删除 DOM 元素时删除数据。

例子:

<object id='myObj' data-url="http://www.stackoverflow.com" type="text/html"></object>

您可以读取如下值:

var url = $('#myObj').data('url');// Read the value
$('#myObj').data('url', 'some-other-value');// Set a new value
于 2013-05-03T22:37:09.183 回答