2016-09-22 1 views
0

Я пытаюсь связать envent, когда форма передается внутри фрейма, но у меня возникают некоторые проблемы:Bind события в содержание IFrame даже при смене URL

Первая попытка:

I пытался связать envent при загрузке страницы, он работал, но событие только привязывается, когда страница загружается целиком.

$('#mainFrame').on("load", function() 
{ 

    $('#mainFrame').contents().find('form').submit(function(){ 

     $('#overlay').addClass("overlay"); 

    }); 
}); 

Тогда я попытался использовать готовое событие

$('#mainFrame').ready(function() 
{ 

    $('#mainFrame').contents().find('form').submit(function(){ 

     $('#overlay').addClass("overlay"); 

    }); 
}); 

Но он не вызывается, когда URL будет изменен.

Вторая попытка:

Я попытался связать событие на каждом входе внутри фрейма, но я думаю, что он не может получить доступ к IFrame элементы без .contents()

$('#mainFrame').on("click", 'input',function(){ 


    $('#overlay').addClass("overlay"); 

}); 

PS : Страница iframe с одного домена

Кто-то может мне помочь, пожалуйста?

+1

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

+0

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

+0

Не полагайтесь на iframe, чтобы быть готовым на месте. Вместо iframes вы можете импортировать html в определенных областях вашей главной страницы, используя '.load()' или '.get()'. Если ваш контент огромен, вы можете переписать свой макет таким образом, чтобы ваш контент был разделен на более мелкие части для загрузки по требованию. – zer00ne

ответ

0

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

Если на нагрузке происходит замедление для вас рассмотреть trigerring события внутри фрейма, возможно, добавить этот код, чтобы сформировать представить:

window.parent.jQuery(window.parent.document).trigger('iframestuff'); 

и в родительской странице слушать:

$(document).on('iframestuff', function(){ 
}); 
+0

Это возможность, но у меня есть программа с не менее чем 2 тысячами страниц с разными шаблонами, так что будет лучше, если я смогу решить эту проблему на родительской странице –

Смежные вопросы