Как я могу получить объект окна, что узел HTML принадлежит использованию JavaScript?

Одно правило при программировании - не оптимизировать микро.

Другое правило заключается в написании четкого кода.

Но в этом случае применяется другое правило. Если вы пишете оптимизированный код, избегайте любого кода, который может вызвать ветвления, так как вы можете вызвать нежелательные дампы конвейера процессора из-за неудачного предсказания ветвлений.

Помните также, что в ассемблере нет типов bool и int как таковых: просто регистры, так что вы, вероятно, обнаружите, что все преобразования будут оптимизированы. Поэтому

b += a;

побеждает для меня; это также яснее.

8
задан Mistalis 25 April 2017 в 13:27
поделиться

3 ответа

+1 к вашему вопросу, это было именно то, что я искал, и спасибо за подсказку, данную непосредственно самим ответом.

Я немного погуглил и согласно http://www.quirksmode.org/dom/w3c_html.html кросс-браузерных таблиц я думаю, что правильный ответ:

function GetOwnerWindow(html_node)
{
   /*
   ownerDocument is cross-browser, 
   but defaultView works on all browsers except Opera/IE that use parentWinow
   */
   return (html_node.ownerDocument.defaultView) ?
      html_node.ownerDocument.defaultView : 
      html_node.ownerDocument.parentWindow;
}

Или может быть даже лучше:

return html_node.ownerDocument.defaultView || html_node.ownerDocument.parentWindow;

Plz дайте мне знать ваши мысли.

11
ответ дан 5 December 2019 в 10:44
поделиться

Я нашел комбинацию свойств, которыми я был после:

node.ownerDocument.defaultView

Это возвращает объект окна, которому принадлежит узел. Обратите внимание, что это не работает в IE.

3
ответ дан 5 December 2019 в 10:44
поделиться

Можно хотеть использовать сам. сам ссылка на текущий документ.

Из iframe:

<body>
<div id="example">Example!</div>
<script type="text/javascript">
    window.onload = function () {
        var exampleNode = document.getElementById('example');
        exampleNode.bar = function () {
            // The highest window object:
            top;
            // The parent node:
            self;
            // The parent node ( except in IE );
            this.ownerDocument.defaultView;
        };
    };
</script>
</body>

Пересечение нескольких объектов окна:

В объектной модели браузера объект главного окна упоминается как вершина. Другие глобальные объекты расположены в древовидной структуре, которая происходит от вершины. Со ссылкой на вершину можно перейти к другим глобальным объектам в дереве при помощи их имен и отношений, очень таким же образом, поскольку Вы пересекаете DOM.

Когда у Вас есть несколько объектов окна, как Вы делаете в случае iframe (со старой школой framesets), кадр имеет атрибут имени. Учитывая положение объектов относительно главного объекта окна, можно использовать имя ребенка для доступа к объекту.

<iframe src ="/default.html" name="advertisement"></iframe>

и затем от контекста главного окна:

self.advertisement

2
ответ дан 5 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: