6

我在jQuery中动态创建一个对象元素来渲染一些内容。它适用于除IE8以外的所有浏览器。无法为jQuery中的'Object'标记设置'data'属性。 [IE8 only]

的代码:

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

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

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

在其他浏览器[IE9,Firefox,铬]:

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

任何解决方案?

+0

我怀疑这是由于IE8同源策略限制:

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

和你一样可以读值。从[MSDN](http://msdn.microsoft.com/en-us/library/ie/ms535859(v = vs.85).aspx):*在IE9标准模式下,对象元素被允许从其他领域。然而,在IE8的标准模式下,这是不允许的。* – bfavaretto 2013-05-03 22:25:50

+0

只是一个猜测,但它可能与stackoverflow.com使用X框架选项来防止嵌入,和IE反应到奇怪吗?尝试嵌入http://example.iana.org/ – 2013-05-03 22:48:36

回答

3

适用于我:使用IE8开发人员工具,我可以看到数据属性。这是screenshot

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

+0

你是对的。实际代码中存在一些愚蠢的拼写错误。谢谢:) – 2013-05-06 09:08:45

1

正如你看到的here,数据(数据集)不受IE支持。
你可以做的是重命名数据数据FOOthen $(..).data("foo")将jQuery的本身IE工作 即使因为特殊处理。
这是绕过数据集的一种方式限制为IE

1

应该做工精细,虽然我建议你使用$ 。数据()方法

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

这是更安全,和jQuery确保当DOM元件经由jQuery方法删除的数据被删除。

例子:

var url = $('#myObj').data('url');// Read the value 
$('#myObj').data('url', 'some-other-value');// Set a new value 
+2

'.data()'不会将信息放在DOM中(即它不会设置'data'属性)。 – jdigital 2013-05-03 22:41:58