Манипуляции внутри созданного окна с помошью jQuery
Можно ли как то с помощью jQuery манипулировать с вновь созданным окном (window.open):
$("#link").click(function() { var newWin = window.open("url", "Wnd"); newWin.focus(); function change(){ $("a").css("color","red"); } newWin.change() }); и так и сяк крутился, не хочет работать; а может это вообще не достижимо? |
В новом окне не подключен же jQuery? Возможно, так заработает:
$("#link").click(function() { var newWin = window.open("url", "Wnd"); newWin.focus(); $("a", newWin.document).css("color","red"); }); при условии, что все в пределах одного домена происходит. |
пока на домене нет возможности протестировать, попробовал просто со статичным файлом
var newWin = window.open(this.href, "Wnd");- не работает ;(. Да все будет на одном домене, jquery будет подключен и в новом окне тоже. Это имеет значение? |
а что если newWin.$ = $; ?
или newWin.window.$ = $; |
а забыл, надо же дождаться загрузки нового окна:
$("#link").click(function() { var newWin = open(this.href, "Wnd"); newWin.onload = function() { $("a", newWin.document).css("color", "red"); }; return false; }); newWin.onload вставил, потому что ни $(newWin.document).ready(…), ни $(newWin).load(…) не заработали. |
2 Koc не совсем понял, поясни.
$("#link").click(function() { var newWin = window.open("url", "Wnd"); newWin.focus(); newWin.onload = function() { $("a", newWin.document).css("color","red"); } return false; }); Octane, вот такая конструкция заработала в Fx. В опере все равно не хочет ссылки перекрашивать. подскажите кроссбраузерное решение ;) upd. думаем об одном и том же ;). как же оперу натравить? и еще момент - может для верности создание нового окна повесить в саму ссылку на onClick? Боюсь что браузеры будут блокировать окно... |
Nubi,
я предлагаю как бы передать ф-цию $ (jQuery) вновь созданному окну. Насколько я знаю у новых окон (равно как и у фреймов) своя область видимости. ну и далее в этом новом окне работать с jQuery |
Только в FF и работает :) щас подумаю, как сделать
|
В осле еще выскакивет "Error "null" есть null или не является объектом" А против этого есть лекарство?
|
Не хотят они никак onload выполнять, наверное, тогда выход один: добавить перед </body> для каждого нового окна:
<script type="text/javascript">ready = 1</script> А из родительского окна уже по таймеру запускать действие: $("#link").click(function() { var newWin = open(this.href, "Wnd"); (function() { if(newWin.ready) { $("a", newWin.document).css("border", "10px solid #f00"); } else { setTimeout(arguments.callee, 20); } })(); return false; }); |
мб я что-то не так делаю, но этот код почему-то не хочет работать. Тестируюсь пока с одним файлом (index.htm) локально. Я добавил в нем перед закрывающим body
<script type="text/javascript">ready = 1</script>, а скрипт обработчика, как и скрипт jquery подключен в голову (внешние файлы). Новое окно с index.htm создается, но вот ссылки в рамку не обводятся... |
Вложений: 1
Проверил в Firefox 3.5, Opera 10, Internet Explorer 8, Google Chrome 4, Safari 4.
|
спасибо, теперь понятно в чем загвоздка - файл с окном уже присутсвует (window.html) у меня же задача специфическая - зря сразу не сказал, мозги людям пудрил ;-). В новом окне должна открываться та же страница, на которой призошел клик по ссылке-обработчику. В этом то и проблема...
|
тогда еще проще
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(function() { $("#link").click(function() { open(this.href + "#windowed", "Wnd"); return false; }); if(location.hash == "#windowed") { $("a").css("border", "10px solid #f00"); } }); </script> </head> <body> <div><a id="link" href="index.html">link</a></div> </body> </html> Цитата:
|
Octane,
благодарю, выручил - оч. нужное для меня решение. |
Решил поднять тему...
Доброго всем здравия! У меня подобная задача, есть основная страница (index.html) которая должна открыть другую из заготовки (coordreport.html). В заготовке есть <div> куда js-ом вставляется содержимое. Работает в хроме, а в файерфокс не хочет. Проверено в винде 8 и убунту 14. вот весь код function parseWKT() { var report = window.open('coordreport.html', 'Report'); report.onload = function () { var newtable = table.html(); var data = $('#coord', report.document); data.html('<table>' + newtable + '</table>'); return false; }; report.focus(); } |
Часовой пояс GMT +3, время: 04:59. |