0

ReportViewer 2008 Web コントロールは、厄介な HTML DOM 構造を発行します。HTML の奥深くにある特定の要素にアクセスしようとしていますが、現在、jQuery セレクターを IE でしか動作させることができません。誰かがその最後の部分で私を助けてくれることを願っています!

私たちが話している HTML は次のようになります (例として単純化されています)。

<div id="uxReportViewer">
    <iframe id="ReportFrame_uxReportViewer">
        <html>
            <frameset id="frameset">
                <frame name="docmap" id="docmap" />
                <frame name="report" id="report">
                    <html>
                        <body class="r0">
                            <div id="oReportDiv">
                                <table>
                                    <tbody>
                                        <tr>
                                            <td id="oReportCell" /> <!-- Goal -->
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        </body>
                    </html>
                </frame>
            </frameset>
        </html>
    </iframe>
    <iframe id="PrintFrame_uxReportViewer" />
</div>

<td id="oReportCell" />押さえておきたい要素です。

これは現在 IE で動作します:

$('div#oReportDiv > table > tbody > tr > td#oReportCell',
    $('#uxReportViewer > iframe:eq(0)')
        .contents()
        .find('html')[0]
        .document
        .frames["report"]
        .document
);

しかし、FF では、私が指定したスコープに入ることさえできず、そこまでしか到達できません。

$('#uxReportViewer > iframe:eq(0)')
    .contents()
    .find('html')[0] // good through here
    .document;       // document is not defined

.documentFFの代わりに、HTMLDocument タイプの an 属性ownerDocumentと aparentNode属性がありますが、ドキュメント内にフレームが見つかりません。

何か案は?

ありがとう!

4

3 に答える 3

0

編集:わかりました、それを知りませんでした。HTML Tidyは、その価値について、HTMLが正確に有効ではないと考えています。

HTML Tidy Parsing ...
line 19 column 9 - Warning: discarding unexpected <html>
line 18 column 5 - Warning: missing </iframe> before <frameset>
line 17 column 1 - Warning: missing </div> before <frameset>
line 20 column 13 - Warning: <frameset> isn't allowed in <body> elements
line 10 column 1 - Info: <body> previously mentioned
line 21 column 17 - Warning: <frame> isn't allowed in <body> elements
line 10 column 1 - Info: <body> previously mentioned
line 3 column 1 - Warning: inserting missing 'title' element
line 4 column 3 - Warning: <style> inserting "type" attribute
line 7 column 3 - Warning: <script> inserting "type" attribute
Info: Document content looks like HTML Proprietary
8 warnings, 0 errors were found!

おそらく、jQueryはこの状況で機能するようには設計されていません。

于 2011-03-06T21:48:20.803 に答える
0

しばらく頭を悩ませたところ、これが IE8 と FF3.6 の両方で機能することがわかりました。

$('#oReportCell', 
    $('#uxReportViewer > iframe:eq(0)')
        .contents()
        .find('html')
        .contents()
        .find('frame[name=report]')[0]
        .contentWindow // supported by modern browsers
        .document
);

きれいではありませんが、機能します。

于 2011-03-06T22:10:24.000 に答える
0

Chromeでテストしています。

正確な HTML コードを使用すると、IFRAME の内容は空の HEAD と空の BODY だけになります。フレームを取得できません。

これ:

$('#uxReportViewer iframe:first').contents().find('html')[0].innerHTML

戻ります:

<head></head><body></body>

ここを参照してください:http://jsfiddle.net/simevidas/REdeN/

于 2011-03-06T22:20:51.173 に答える