Ответ 1
$("iframe").contents().find("textarea").keydown(...)
Я использую библиотеку editArea и jquery, чтобы делать то, что мне нужно...
http://www.cdolivet.com/index.php?page=editArea&sess=2b8243f679e0d472397bfa959e1d3841
поэтому в моем html есть тег iframe, который editArea использует то, что мне нужно, это получить доступ к чему-то подобному с помощью jquery
$('iframe textarea').keydown(function (e){
number = 17; //any number really :)
if(e.which == number){
//do something...
alert('Done...');
}
});
Я попробовал это, но похоже, что он не обнаруживает этот ключ. но он работает, если селектор был $(document) поэтому остальная часть функции работает, она просто не подхватывает iframes textarea keydown
любые идеи? Благодаря
$("iframe").contents().find("textarea").keydown(...)
Вам нужно выполнить поиск внутри внутреннего document
iframe, чтобы получить элемент textarea
:
var textarea = $('textarea', $('iframe').get(0).contentWindow.document);
textarea.keydown(function (e){
var number = 17;
var code = (e.keyCode ? e.keyCode : e.which);
if(code == number){
//do something...
alert('Done...');
}
});
Вы можете путешествовать на любом уровне. Вышеуказанные ответы верны. Я сделал это ниже
var iframeMain = $("#iframe0").contents().find('#iframeMain');
var detailsForm = $(iframeMain).contents().find('#detailsform');
для доступа к родителям вы можете использовать
window.parent.parent. // upto any level
Вам нужно получить доступ к iframes contentWindow.document
, а не к самому iframe.
Хорошо, это то, что вы хотите:
Вы должны делать
iframeDoc = document.getElementById('resultsFrame').contentWindow;
// result frame is id of iframe
$(iframeDoc).keydown(function(e))
{
// your functionality here
}
Если все остальное не удается, я закончил работу над этим, обернув эту функцию:
$(window).blur(function () {
// genius code here
}