Как заставить экземпляр работать в нескольких кадрах?Javascript

Форум по Javascript
Ответить
Anonymous
 Как заставить экземпляр работать в нескольких кадрах?

Сообщение Anonymous »

В документации MDN говорится об экземпляре в нескольких кадрах:

Например, чтобы проверить, является ли узел SVGElement в другом контексте, вы можете использовать myNode экземпляр myNode.ownerDocument.defaultView.SVGElement.

Однако такие проверки не выполняются работает, когда элемент создается в родительском документе, а затем добавляется к документу внутреннего фрейма. Например:
const iframe = document.createElement('iframe');
document.body.append(iframe);
const div = document.createElement('div');
iframe.contentDocument.body.appendChild(div);

Теперь, если мы проверим экземпляр div div.ownerDocument.defaultView.HTMLDivElement, он выведет false.
В контексте контекстного сценария моего расширения Chrome я хочу иметь возможность проверить, является ли произвольно полученный Node элементом div. Я предпочитаю использовать instanceof, поскольку он автоматически улучшает проверку типов TypeScript. Мое расширение работает на всех веб-сайтах, поэтому я не могу запретить веб-сайтам следовать шаблону, подобному показанному выше.
Вопрос: Как определить функцию getWindow() (в примере ниже), чтобы она работала корректно для произвольных узлов (особенно в приведенном выше случае)?
if (node instanceof getWindow(node).HTMLTextAreaElement) {
// access node.value
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... ple-frames
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»