2

私は次のようにwindow.open()を呼び出しています:

window.open('blank.html', 'New_Window\x3a_Jamie', 'width=800,height=800');

私がコードで行ったことは、ウィンドウの名前を取得し、MicrosoftWebProtectionライブラリを使用してJavaScriptでエンコードしたものです。IEはウィンドウ名のスペースが好きではないことを読んだので、スペースもアンダースコアに置き換えています。参考までに、元の文字列は「New Window:Jamie」で、「:」は「\x3a」としてエンコードされているようです。ウィンドウはFireFoxで問題なく開きますが、IE8では開きません。IE8は、このエンコーディングや文字などが好きではありませんか?IE8のウィンドウ名に表示できる文字に関する規則はありますか?

4

3 に答える 3

2

IE8のウィンドウ名に表示できる文字に関する規則はありますか?

はい。文書化されていないようですが、IEでは常にウィンドウ名を英数字とアンダースコアで構成する必要があります。エンコードされた文字列リテラルから読み取られるかどうかに関係なく、コロンは受け入れられません。

任意の文字列を一意の名前セーフバージョンにマップする必要がある場合は、英数字以外のすべての文字をエスケープシーケンスにエンコードするなどの操作を行う必要があります。例:

function encodeToName(s) {
    return s.replace(/[^A-Za-z0-9]/g, function(match) {
        var c= match[0].charCodeAt(0).toString(16);
        return '_'+(new Array(5-c.length).join('0'))+c;
    });
}

alert(encodeToName('New Window: Jamie'));
// 'New_0020Window_003A_0020Jamie'

私はcasablancaに同意しますが、実際にこれを行う必要はほとんどないようです。ユーザーがウィンドウ名を表示することは決してないので、w1同じように優れています。ウィンドウ名が必要になることはめったにありません。

于 2010-11-08T20:50:53.810 に答える
0

ウィンドウ名は識別子として機能するものにしたいと思いますしたがって、「New_Window_Jamie」はおそらく問題ありません。

于 2010-11-08T20:26:55.637 に答える
0

本当にウィンドウ名が必要ですか?ドキュメントから:

<a>このような文字列は、要素またはaのターゲット属性が指定されている場合に、リンクおよびフォームのターゲットとして使用でき<form>ます。この文字列パラメータには空白を含めないでください。

名前を指定するのはこれだけです。「スペースなし」以外の制限はありませんが、文字、数字、アンダースコアだけを使用しても安全です。

于 2010-11-08T20:27:44.793 に答える