0

JavaScript を介して XSLT 変換を実行するように w3shools の「XSLT on the Client」divチュートリアルを適応させていますが、結果をWeb サイトのタグではなく a に表示するように変更しました。コードは次のとおりです。

<body onload="displayResult()">
<div id="example" />
</body>

そして、ここに私のものがあります:

<div class="Tables_Wrapper">
<iframe onload="displayResult()">
<div id="example" />
</iframe>
</div>

私のページはセカンダリをレンダリングしませんdiv。を作成しますiframeが、空です。

私はこれにまったく慣れておらず、その場で学んでいます。JavaScript についてよく知らないので、w3schools の Web サイトに表示されているとおりに正確に再現しているだけです。タグをそのままbody onloadにしておくと、HTML ページに表示したい場所に表示されないことを除けば、問題なく動作しました。

4

3 に答える 3

0

jQuery は、iframe での onload イベント リスナーをサポートします。

$(document).ready(function () {
    $('iframe').load(function () {
        process();
    });
    function process() {
        alert('iframe has now loaded!'); // substitute for the code you wish to run.
    }
});

ただし、iframe は Web ページ内の「穴」のようなものであり、外部コンテンツを「透視」できると考えてください。このため、iframe がサポートされていない場合を除き、iframe 内の HTML コードはレンダリングされません (その場合は、次のようなメッセージをユーザーに書き込むことができます: 申し訳ありませんが、お使いのブラウザーはこのコンテンツをサポートしていません)。

于 2012-12-08T18:39:47.670 に答える
0

まず、新しいページTest.htmlを作成し、その中に div を配置します。次に、iFrame を次のように変更します。

<iframe onload="displayResult()" id="iframeId" src="Test.html">
</iframe>​

次に、JS を次のように変更します。

function displayResult() {
    xml = loadXMLDoc("cdcatalog.xml");
    xsl = loadXMLDoc("cdcatalog.xsl");

    var iframe = document.getElementById('iframeId');
    var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
    // code for IE
    if (window.ActiveXObject) {
        ex = xml.transformNode(xsl);
        innerDoc.getElementById("example").innerHTML = ex;
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument) {
        xsltProcessor = new XSLTProcessor();
        xsltProcessor.importStylesheet(xsl);
        resultDocument = xsltProcessor.transformToFragment(xml, document);
        innerDoc.getElementById("example").appendChild(resultDocument);
    }
}​

それでおしまい :)

于 2012-12-08T18:35:33.173 に答える