Как лучше всего выяснить, что доступ к родительскому окну имеет ограничения из-за той же политики происхождения? - PullRequest
3 голосов
/ 16 декабря 2009

Мое текущее решение:

function isAccessToWindowRestricted(w) {
  try {
    return !w.location.href;
  } catch (e) {
    return true;
  }
}

Есть идеи получше? Есть ли «легальный» способ без try-catch?

1 Ответ

3 голосов
/ 21 декабря 2009

хорошего способа нет, так как нет способа проверить, что значение в родительском фрейме даже существует , не выдав исключение.

Я только что попробовал несколько вещей, в том числе:

var parentURL = window.parent && window.parent.location && window.parent.location.href;

и не смотря ни на что, оно выдаст исключение из-за той же политики происхождения. тем не менее, вы можете проверить, видите ли вы в iframe

function checkInFrame( arg ){ arg = arg || window; return arg.parent == window; }

но, насколько мне известно, вы должны использовать блок try { ... } catch( ... ) { ... } (для этого он и нужен).

...