Вы сравниваете экземпляр элемента со строкой "undefined"
, и вы не проверяете, присутствует ли window.opener.document
(я не знаю, нужно это или нет, но этолегко добавить).Вы, вероятно, имели в виду:
// Note: Still not right, see below
if (typeof window.opener.document.getElementById('myHidden') !== "undefined")
... за исключением того, что это все еще не правильно, потому что getElementById
возвращает null
(не undefined
), когда нет соответствующего элемента.
Воткак бы я это сделал:
var input = window.opener &&
window.opener.document &&
window.opener.document.getElementById('myHidden');
var value = input && input.value;
if (value != "1") {
// Do something
}
При этом используется необычайно мощный оператор &&
(близкий родственник - необычайно мощный оператор ||
).Первое назначение будет коротким замыканием, если window.opener
или window.opener.document
является "фальси" (null
или undefined
или 0
или ""
или NaN
или, конечно, false
- ипоследние четыре не применяются), в результате input
составляет undefined
.Второе назначение будет коротким замыканием, если input
является ложным, в результате value
будет undefined
.undefined
! = "1"
, так что ...