20

jQuery を使用して Iframe のコンテンツを取得することはできますが、純粋な JavaScript を使用して取得する方法を学びたいと考えています。

これは私がこれまでに持っているものです。

 var frame = document.getElementById('awc_frame');
 var easyBB = frame.contentWindow.document.body.innerHTML;
 easyBB.getElementById('chatbox-title').innerText="Chatbox";

私は何を間違っていますか、助けてください。また、もともとフレームにはIDがなく、すでにこれを試しました

var frame = document.frames['awc_frame'];

そのクロスブラウザは効率的ですか?そして、どうすれば contentWindow を取得できますか? jQueryではなくJavaScriptでこれを行うことができるように、いくつかの説明があります。jQueryのバージョンはこちら

var frame = $('#avacweb_chat iframe');
var easyBB = $('#chatbox-title',frame.contents()).text('Chatbox');
4

2 に答える 2

37

同じドメインにある場合は、これを試してください。iframe のオリジンが表示中のウィンドウとは異なる場合、iframe のコンテンツにアクセスできません。

var iframe = document.getElementById("awc_frame");
var iframe_contents = iframe.contentDocument.body.innerHTML;

同じドメインのページを表示する jsfiddle iframe の作業例:

http://jsfiddle.net/tqAL3/1/

于 2013-05-26T01:30:25.583 に答える
0

Nile と同じ答えですが、querySelector に似た関数として

// iframe-query-selectors.js v1
function iframeQuerySelector(iframe, selector, all){
    if( iframe && (iframe.nodeName || iframe.tagName) === 'IFRAME' && iframe.nodeType === 1){
        all = all ? 'All' : '';
        if(selector){
            return iframe.contentDocument['querySelector' + all](selector);
        };
        return iframe.contentDocument;
    };
    throw new Error('The element must be an iframe.');
};
function iframeQuerySelectorAll(iframe, selector){
    return iframeQuerySelector(iframe, selector, true);
};
于 2021-05-08T17:53:29.913 に答える