6

Ich erstelle ein Objektelement dynamisch in jQuery, um einige Inhalte zu rendern. Es funktioniert in allen Browsern außer IE8.Das Attribut 'data' für den Tag 'Object' konnte in jQuery nicht festgelegt werden. [Nur IE8]

Der Code:

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

Die Struktur HTML nach der Ausführung erstellt (in IE8):

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

In anderen Browsern [IE9, Firefox, Chrome]:

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

Irgendwelche Lösungen?

+0

Ich vermute, dies zu Same Origin Policy Einschränkungen in IE8 zurückzuführen ist. Von [MSDN] (http://msdn.microsoft.com/en-us/library/ie/ms535859 (v = vs.85) .aspx): * Im IE9-Standards-Modus darf das Objektelement Inhalt von laden andere Domänen. Im IE8 Standards-Modus ist dies jedoch nicht erlaubt. * – bfavaretto

+0

Nur eine Vermutung, aber könnte es etwas mit Stackoverflow.com zu tun haben, das X-Frame-Optionen verwendet, um das Einbetten zu verhindern, und IE auf diese seltsame Reaktion reagiert? Versuchen Sie, http://example.iana.org/ –

Antwort

3

Funktioniert für mich: mit den IE8-Entwickler-Tools kann ich das Datenattribut sehen. Hier ist ein screenshot.

(Ich weiß, ich sollte es nicht zu sagen haben, aber: Sie müssen dafür sorgen, dass Sie erlauben Skripte auszuführen.)

+0

einzubetten. Sie hatten Recht. Im Code war ein dummer Schreibfehler. Danke :) –

1

wie Sie sehen here, Daten (-Datensatz) wird nicht unterstützt durch IE.
Was Sie tun können, ist umbenennenDaten zu Daten-foo und then $(..).data("foo") wird arbeiten auch in IE wegen einer Sonderbehandlung von jquery selbst.
Dies ist eine Möglichkeit, Datensatz Begrenzung für IE zu umgehen.

1

Es sollte gut funktionieren, obwohl ich Sie $ verwenden empfehlen .data() Methode

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

Es ist viel sicherer, und jQuery stellt sicher, dass die Daten entfernt wird, wenn DOM Elemente über jQuery Methoden entfernt werden.

Beispiel:

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

Und Sie den Wert lesen wie:

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

'.data()' legt die Information nicht in das DOM (d. H., Es setzt nicht das 'data' Attribut). – jdigital