4

これはjavascript私が現在使用しているコードです:

     function toggleContainer(containerID, hideContainerIDs) {
            if(hideContainerIDs) {
                for(var i=0; i<hideContainerIDs.length; i++) {
                    ajaxChat.showHide(hideContainerIDs[i], 'none'); 
                }
            }       
            ajaxChat.showHide(containerID);
            if(typeof arguments.callee.styleProperty == 'undefined') {
                if(typeof isIElt7 != 'undefined') {
                    arguments.callee.styleProperty = 'marginRight';
                } else {
                    arguments.callee.styleProperty = 'right';
                }
            }
            var containerWidth = document.getElementById(containerID).offsetWidth;
            if(containerWidth) {
                document.getElementById('chatList').style[arguments.callee.styleProperty] = (containerWidth+28)+'px';
                document.getElementById('chatBooth').style[arguments.callee.styleProperty] = (containerWidth+28)+'px';  
            } else {
                document.getElementById('chatList').style[arguments.callee.styleProperty] = '20px';
                document.getElementById('chatBooth').style[arguments.callee.styleProperty] = '20px';
            }

        }

DIV と IFrame コード:

<div id="chatBooth" style="display:none; overflow: hidden;"> 
        <iframe style="overflow:hidden;height:100%;width:100%" height="100%" width="100%" frameborder="0" scrolling="no" name="booth" id="booth" src="about:blank">
        </iframe>
    </div>

考えられることはすべて試しましたが、このコードはすべてのブラウザで真剣に機能しますが、IE. 現在表示されているウィンドウ内のリンクをクリックすると、 hidden 内に新しいページが読み込まれ、ボタンをクリックして表示IFrameできるようになります。IFrame非表示の と を表示および非表示にするボタンは次のとおりDIVですIFrame

<input type="button" value="[LANG]toggleChat[/LANG]" title="[LANG]toggleTitleChat[/LANG]" alt="[LANG]toggleChat[/LANG]" onclick="ajaxChat.showHide('chatBooth', null);"/>   

これは、すべてのブラウザで動作Linkする に配置する必要があるものを変更するのコードですが、 !IFrameIE

alert(this.channelName);
            document.getElementById('booth').contentWindow.location.reload(true);
            document.getElementById('booth').src = 'http://www.cnn.com';

上記のコードは、 以外のすべてで機能しますIE。私は完全に途方に暮れています。私は何時間も精査Googleしてきましたが、解決策や問題の原因さえ見つけられないようです。どんな助けでも大歓迎です。

要求された showHide コードは次のとおりです。

showHide: function(id, styleDisplay, displayInline) {
    var node = document.getElementById(id);
    if(node) {
        if(styleDisplay) {
            node.style.display = styleDisplay;
        } else {
            if(node.style.display == 'none') {
                node.style.display = (displayInline ? 'inline' : 'block'); 
            } else {
                node.style.display = 'none';
            }
        }   
    }
}

Iframe のリロードと Iframe SRC の変更に使用されるコード

document.getElementById('booth').contentWindow.location.reload(true);
document.getElementById('booth').src = 'http://www.WEBSITE.com'+ ajaxChatConfig.loginChannelName +'/index.html';

上記は、IEがそうするように言われたとしても、IFrame内に何かをロードすることを許可していないようです。

4

1 に答える 1

0

あなたが提供したコードをコピーし、関数の 1 つを変更するだけで機能するようになりました。ただし、コードの実際の作業コピーがないため、これが機能するかどうかはわかりません...

私はこれからshowHide関数の宣言を変更しました...

showHide: function(id, styleDisplay, displayInline) {

これに...

function showHide(id, styleDisplay, displayInline) {

私が使用したHTML:

<body>
    <div id="chatBooth" style="display:none; overflow: hidden;width:100%;">
        <iframe style="overflow:hidden;height:100%;width:90%;border:1px solid red;" scrolling="no" name="booth" id="booth" src="http://www.ebay.com"></iframe>
    </div>

    <input type="button" value="toggleChat" title="toggleTitleChat" onclick="showHide('chatBooth', null);"/>
</body>

アップデート::

この関数を使用して、document.getElementById('booth').contentWindow.location.reload(true); を置き換えることができます。

function loadContent(passedInURL){
    if(!passedInURL){
        passedInURL = "http://www.ebay.com";
    }
    var theIFrame = "<iframe style='overflow:hidden;height:200px;width:90%;border:1px solid red;' scrolling='no' name='booth' id='booth' src='";
    theIFrame += passedInURL + "'></iframe>";
            document.getElementById('chatBooth').innerHTML= theIFrame;
}

このボタンをページに追加します。

<input type="button" value="reLoad" title="reLoadFrame" onclick="loadContent();"/>
于 2013-01-17T02:01:54.407 に答える