6

私は、コンテンツをレンダリングするために、jQueryでオブジェクト要素を動的に作成しています。 IE8以外のすべてのブラウザで動作します。jQueryの 'Object'タグに 'data'属性を設定できません。 [IE8のみ]

コード:

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

。 [MSDN](http://msdn.microsoft.com/en-us/library/ie/ms535859(v=vs.85).aspx)から:* IE9標準モードでは、オブジェクト要素はコンテンツを読み込むことができます他のドメインしかし、IE8の標準モードでは、これは許可されていません。* – bfavaretto

+0

ちょうど推測ですが、埋め込みを防ぐためにX-Frame-Optionsを使ってstackoverflow.comと何か関係がありますか?IEはそれを奇妙に反応しますか?埋め込みを試してください。http://example.iana.org/ –

答えて

3

私のために働く:IE8開発ツールを使用して、私はデータ属性を見ることができます。ここにはscreenshotがあります。

(私はそれを言う必要はありません知っているが、:あなたはスクリプトが実行できるようにしていることを確認する必要があります。)

+0

あなたは正しいです。実際のコードには綴り間違いがありました。ありがとうございました:) –

1

あなたがhereを見るように、データ(セット)はIEによってサポートされていません。あなたは何ができるか
はとthen $(..).data("foo")はjqueryのそれ自体であるため、特殊な取り扱いのIEでさえ に動作しますデータ-fooのデータの名前を変更です。
これは、データセットの制限をバイパスする方法です。です。

1

それが正常に動作する必要があり、私はあなたが$を使用することをお勧めしますが.DATA()メソッド

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

それははるかに安全である、とjQueryは、DOM要素をjQueryの方法によって除去されたときにデータが削除されることを保証します。

例:

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

そして、あなたは次のように値を読むことができます:私は、これはIE8で同一生成元ポリシーの制約に起因している疑いがある

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

'.data()'はDOMに情報を配置しません(つまり、 'data'属性を設定しません)。 – jdigital

関連する問題