[JS] XSLT z poziomu JS i problem ze znaleziem tagu SCRIPT

0

Cześć,

Wygrzebałem z sieci kawałek kodu, który w locie ma przetwarzać pliki XML na HTML z wykorzystaniem XSL. Dla części IE wygląda on tak:

if (window.ActiveXObject) {
    element.innerHTML = xml.transformNode(xsl);
}

Element jest oczywiście obiektem Element wybranym przez metodę:

document.getElementById(...);

Problem w tym, że tak dodawany kod nie wykonuje kodów zawartych w tagach <script>. Zauważyłem, że dla kody dla przeglądarek innych niż IE wywoływana jest metoda:

element.appendChild(...);

do której jest dodawany DocumentFragment i wtedy kod JS jest wykonywany. Czy istnieje jakakolwiek możliwość bym, jeśli mam kod HTML zapisany w napisie zmienić na obiekt klasy DocumentFragment?

Pozdrawiam,
Grzegorz

0

REGEXPem wydobądź kody z tagów <script> i zrób eval.

0

O Regexie myślałem ale widzę w tym problem z parsowaniem i ewentualną obsługą błędów. Stąd szukam rozwiązań w zakresie bardziej niezależnych typu parsowanie na DocumentFragment.

0

Poczyniłem taki kawałek kodu:

var element = document.getElementById("component");

element.innerHTML = sender.responseText;


var scripts = element.getElementsByTagName("script");

if (scripts != null) {
  for (var i = 0; i < scripts.length; i++) {
    var script = scripts[i];

    if (script.type == "text/javascript") {
      eval(script.innerHTML);
    }
  }
}

Problem w tym, że w FF działa bez problemu, a w IE za diabła nie znajduje nowo dodanych elementów (tagów które zostały dodane przez innerHTML).

0

Udało mi się uruchomić na IE7 i FF. Rozwiązanie jest raczej obejściem problemu, więc jeśli znajdzie się ktoś kto zna lepsze miło będzie jeśli się podzieli.

Otóż problem związany jest z tagiem <script>. IE po prostu nie odnajduje tego tagu w części dołączonej przez innerHTML - może jakieś kwestie zabezpieczeń. Wystarczy tag zmienić na dowolnie inny i wszystko działo. Jak wykorzystałem tag z unikalną nazwą klasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1