0

popuptest.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title></title>
</head>
<body>
<form action="#" id="formid" >
    <input type="text" id="textinput" value="empty value" />
    <input type="hidden" id="hiddeninput" value="empty value" />
    <button type="button" onclick="window.open('popup.xhtml', 'Select Reference','status,width=400,height=400');" >Open PopUp</button>
</form>
</body>
</html>

popup.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title></title>
</head>
<body>
<button onclick="
    opener.document.getElementById('textinput').value = 'text value from child pop up !';
    opener.document.getElementById('hiddeninput').value = 'hidden value from child pop up !';
    window.close();
">Put values to parent</button>
</body>
</html>

popuptext.xhtml を開く -> ポップアップを開くボタンを押す -> 値を親に置くを押す 親ウィンドウで観察したこと:

値が親テキスト入力に渡されたようです 値が親テキスト入力に渡されたようです

しかし一方で、Chrome デバッグ (F12) で見られるもの:

ああ、神様! テキスト入力が空です!  値が非表示の入力に渡されました(予想どおり)

ああ、神様!テキスト入力が空です! 値が非表示の入力に渡されました(予想どおり)

Chrome バージョン: 29.0.1547.76 m Firefox 24.0と同じ
このような動作について何か説明はありますか? バグですか?
テキスト入力に値を渡してからフォームを送信する必要がありますが、この場合、フォームには値が含まれていません。

4

1 に答える 1

2

表示される値 (プロパティ) と dom の値 (属性) は 2 つの異なるものです。

inputDOM で設定されたその属性は、要素のデフォルト値のようなものです。プロパティ に値が格納されていない場合はvalue、DOM 属性の 1 つが表示されます。プロパティ に値が格納されている場合、value属性に格納されている値の代わりにこの値が表示されますが、ご覧のとおり、dom 属性は変更されません。

nullプロパティvalueに保存すると、デフォルト値が再び表示されます。

したがって、観察された動作は正しいです。

ここで、プロパティ属性の違いの 1 つの影響を示す別の質問への回答

于 2013-09-21T16:08:24.387 に答える