Вызов JavaScript-кода в iframe с родительской страницы - PullRequest
581 голосов
/ 30 октября 2008

По сути, у меня есть iframe, встроенный в страницу, а iframe имеет некоторые JavaScript подпрограммы, которые мне нужно вызвать с родительской страницы.

Теперь все наоборот, просто вам нужно позвонить parent.functionName(), но, к сожалению, мне нужно прямо противоположное этому.

Обратите внимание, что моя проблема не в изменении URL-адреса источника iframe, а в вызове функции, определенной в iframe.

Ответы [ 17 ]

3 голосов
/ 03 августа 2012

фолловинг ответа Нитина Бансала

и для еще большей надежности:

function getIframeWindow(iframe_object) {
  var doc;

  if (iframe_object.contentWindow) {
    return iframe_object.contentWindow;
  }

  if (iframe_object.window) {
    return iframe_object.window;
  } 

  if (!doc && iframe_object.contentDocument) {
    doc = iframe_object.contentDocument;
  } 

  if (!doc && iframe_object.document) {
    doc = iframe_object.document;
  }

  if (doc && doc.defaultView) {
   return doc.defaultView;
  }

  if (doc && doc.parentWindow) {
    return doc.parentWindow;
  }

  return undefined;
}

и

...
var el = document.getElementById('targetFrame');

var frame_win = getIframeWindow(el);

if (frame_win) {
  frame_win.targetFunction();
  ...
}
...
3 голосов
/ 13 октября 2011

Продолжая с JoelAnair's ответ:

Для большей надежности используйте следующее:

var el = document.getElementById('targetFrame');

if(el.contentWindow)
{
   el.contentWindow.targetFunction();
}
else if(el.contentDocument)
{
   el.contentDocument.targetFunction();
}

работал как шарм:)

2 голосов
/ 30 августа 2011

То же самое, но немного проще: Как обновить родительскую страницу со страницы в iframe Просто вызовите функцию родительской страницы, чтобы вызвать функцию javascript для перезагрузки страницы:

window.location.reload();

Или сделать это прямо со страницы в iframe:

window.parent.location.reload();

Обе работы.

2 голосов
/ 21 ноября 2008
       $("#myframe").load(function() {
            alert("loaded");
        });
1 голос
/ 14 декабря 2011

Попробуйте просто parent.myfunction()

1 голос
/ 05 декабря 2011

Если мы хотим вызвать функцию javascript родительской страницы из iframe, сгенерированного из кодировки. без тени или лайтбокса

window.parent.targetFunction ();

0 голосов
/ 05 августа 2014

Используйте следующее для вызова функции фрейма на родительской странице

parent.document.getElementById('frameid').contentWindow.somefunction()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...