Выяснение, внутри какого iframe выполняется скрипт - PullRequest
2 голосов
/ 03 мая 2010

У меня есть страница с несколькими фреймами. В одном из этих фреймов есть страница из другого домена. Внутри этого iframe есть еще один iframe со страницей из родительского домена.

my page from mydomain.com
  -> an iframe
  -> iframe "#foo" from another-domain.com>
    -> iframe "#bar" from mydomain.com
  -> another iframe

Мне нужно получить ссылку на узел "#foo" на главной странице. Модель безопасности должна позволять мне это делать, потому что «#bar» имеет тот же домен, что и главная страница. Поэтому я выполняю итерацию массива window.top и сравниваю каждый элемент с объектом window, который в настоящее время является объектом окна "#bar". Мой тестовый код выглядит так:

* +1007 *

Это прекрасно работает во всех браузерах, но Internet Explorer 6 выдает ошибку безопасности при доступе к top[i][j]. Любые идеи о том, как решить эту проблему на IE6?

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Похоже, что IE недоволен тем, что вы получаете доступ к любым свойствам try[i], поскольку это часть другого контекста безопасности, даже если свойство, к которому вы обращаетесь, будет в том же контексте безопасности, что и скрипт.

Возможно, вам здесь не повезло. Тем не менее, вы пытались заменить:

  • попытаться [я]
  • попытаться [я] [J]

с:

  • try.frames [я]
  • try.frames [я] .frames [J]

Это должно быть примерно так же. Это длинный выстрел, и я не знаю, сработает ли это, но могло бы просто.

0 голосов
/ 03 мая 2010

Сотрудник нашел решение: взобраться на дерево.

var getLastParent = function (baseWindow, topWindow) {
    var lastParent, nextParent;
    lastParent = nextParent = baseWindow;
    while (nextParent != topWindow && nextParent != nextParent.parent) {
        lastParent = nextParent;
        nextParent = nextParent.parent;
    }
    return lastParent;
};
var findWindow = function (baseWindow, topWindow) {
    var lastParent = getLastParent(baseWindow, topWindow);
    for (var i = 0; i < topWindow.length; i++) {
        if (topWindow[i] == lastParent)
            return i;
    }
    return -1;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...