2009-06-10 16 views
1

ブラウザ:IE6/IE7。IEモーダルダイアログの文書を置き換えます

フォームターゲットまたはJavaScript関数のいずれかを使用して、HTMLモーダルダイアログに新しいドキュメントを読み込みたいとします。

<html> <!-- quirks mode --> 
<head> 
<script> 
function openModal(url) { 
    if(window.showModalDialog) showModalDialog(url); 
    else { 
     try { 
      netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); 
      open(url, "", "modal=yes"); 
     } catch (e) { 
      alert("dialog windows unsupported by browser"); 
     } 
    } 
} 
</script> 
</head> 
<body style="background:red" onload="setTimeout(function(){document.body.style.backgroundColor='white'},100)"> 
<a href="javascript:openModal(location.href)">Open Modal</a> 
<form> 
<input type="submit" value="Send Form" /> 
</form> 
<a href="javascript:location.reload()">Reload content</a> 
</body> 
</html> 

Geckoベースのブラウザでは、動作します。

IEでは、モーダルダイアログウィンドウで、フォームが新しいウィンドウを開きます(target="_self"属性を指定しても)、javascript reload()は自動的に失敗します。 location.replace(location.href)またはlocation.href=_someurl_を実行しようとすると、新しいウィンドウが開きます。

私の質問:モーダルダイアログウィンドウで現在のドキュメントを置き換えるIEを取得するにはどうすればよいですか?

答えて

1

問題の<form>一部を処理ソリューション:ページの<head>セクションに

<base target="_self" /> 

を追加します。

しかし、JavaScriptの問題は解決しません。

0
window.name="SomeWindowName"; 
window.open("www.microsoft.com","SomeWindowName"); 
+0

私はモーダルウィンドウが必要です。 – Alsciende

0

しばらく遊ん後に、そのような

location.reload();return false; 

または

window.location = window.location; 
など、いくつかの解決策があるようですので、私はちょうど、Internet Explorer 8のと同じ問題に遭遇

または

window.location.reload(true); 

しかし、それらのどれも私のために働いていません - 何も起こらないか、最善の場合、新しいウィンドウが開きます。私は回避策のいくつかの種類が

document.forms[0].submit(); 

を使用することであるとして、それはあなたがあなたのページ上のフォームを必要とするように、すべての星座のために働く(およびフォームの送信がないことを確認していないことを作ってみた何

不要な変更はしないでください)、それは私のために働いていました。また、Alsciendeの説明に従って、

<base target="_self" /> 

をページのヘッダーに挿入することを忘れないでください。

HTH

G.

3
window.name = "SomeWindowName"; 
window.open("www.microsoft.com", "SomeWindowName"); 

...作品。 location.replaceの代わりにこれを使用する必要があります

+0

驚いたことに、それは実際にはありません。 'document.location = [url]'を2行に置き換えるだけです。それは爽快に働く。 – Tacroy

関連する問題