Если у вас нет контроля над страницей и вы хотите наблюдать за каким-то изменением, то современный метод заключается в использовании MutationObserver
. Пример его использования, (f6]
new MutationObserver(function(mutations) {
mutations.some(function(mutation) {
if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
console.log(mutation);
console.log('Old src: ', mutation.oldValue);
console.log('New src: ', mutation.target.src);
return true;
}
return false;
});
}).observe(document.body, {
attributes: true,
attributeFilter: ['src'],
attributeOldValue: true,
characterData: false,
characterDataOldValue: false,
childList: false,
subtree: true
});
setTimeout(function() {
document.getElementsByTagName('iframe')[0].src = 'http://jsfiddle.net/';
}, 3000);
Выход через 3 секунды
MutationRecord {oldValue: "http://www.google.com", attributeNamespace: null, attributeName: "src", nextSibling: null, previousSibling: null…}
Old src: http://www.google.com
New src: http://jsfiddle.net/
В jsFiddle
Добавлено ответ здесь, поскольку исходный вопрос был закрыт как дубликат этого.
Ваше выражение анализируется как (var is "") or "1"
, что всегда Истина, потому что "1"
Истина-иш.
Если вы добавите круглые скобки, чтобы получить var is ("" or "1")
, это эквивалентно var is True
, потому что "" or "1"
Истина, потому что «1» Истина-иш.
Сравнение строк с is
чревато опасностью, потому что оператор is
проверяет тождество , а не равенство.
Вы, вероятно, хотите var in ("", "1")