есть простой код Code: <iframe name="iframe" src="http://site.ru" style="width: 640px; height: 800px;"></iframe>" можно ли его в javascript'e представить (мне нужно для последующей обфускации) и будет ли этот фрейм работать только в пределах <head> </head>
PHP: <script>document.write('<iframe name="iframe" src="http://site.ru" style="width: 640px; height: 800px;"></iframe>');</script> дорвейщики, такие дорвейщики.
я это уже нагуглил, не пашет почему-то (код ставился за пределами </head>, но обычный то фрейм работает!
Code: var iframe = document.createElement('iframe'); iframe.name = 'iframe'; iframe.src = 'http://site.ru'; iframe.style.width = '640px'; iframe.style.height = '800px'; window.onload = function() { document.getElementsByTagName('body')[0].appendChild(iframe); };
Melfis, а если боди нет? ) Какбы универсально: document.write('<div id="outhere"></div>'); var iframe = document.createElement('iframe'); iframe.name = 'iframe'; iframe.src = 'http://site.ru'; iframe.style.width = '640px'; iframe.style.height = '800px'; window.onload = function() { document.getElementById('outhere').appendChild(iframe); }; + Виндов.онлоад некорректно.
Некорректно ибо кроме этого кода на странице может теоретически быть и другой код, привязанный к онлоад. Вот смотри примерчик яркий: HTML: <script> window.onload = function(){alert(1);}; window.onload = function(){alert(2);}; </script> Выведет только ОДИН алерт (второй). А чтобы к онлоаду привязать много разных действий, то следует заюзать функцию что-то типа: HTML: function bindEvent(funct) { window[((window[($aEL='addEventListener')])?($aEL):('attachEvent'))] ( ((window[$aEL])?(''):('on'))+"load",funct,((window[$aEL])?(!1):(null)) ); } и юзать таким образом: HTML: bindEvent(function(){alert(1);}); bindEvent(function(){alert(2);}); Я, конечно, понимаю, что это мелочи, но они тоже имеют место быть.
Можешь привести пример страницы без боди? Как-то не верится, что такое бывает. P.S.: Не обязательно этот пример должен быть на настоящем сайте. Подойдет даже самописный html-код.
подскажите, можно ли менять фрейм в зависимости от старонних параметров? Например юзер агента. под выбранные агенты свой фрейм
Конкретно в зависимости от юзер-агента - можно. Так как за это отвечает JS-обьект navigator (конкретнее: navigator.userAgent). А вот ip-адрес, например, нельзя (только если сочетать ajax с php, который его выводит).
Ты о чем? upd: Понятно. Процитировал одно сообщение, а ответил на другое. Ответь на мое тоже. Как может не быть body?
Ну вот так, например. HTML: <html> <head> <title>Web Page</title> </head> <h1>It Works!</h1> </html> Оно запустится, 100%. Если серьезно - то либо я не понимаю как ты можешь не понимать, что без боди может быть пропарсен хтмл код без ошибок либо ты имеешь ввиду что-то другое, более коварное.
Сейчас мы это узнаем Я добавил в твой html-код небольшой скрипт перед закрывающим тегом head PHP: <script> window.onload = function() { if(document.getElementsByTagName('body')[0]) // проверяем наличие body alert('good body'); else alert('bad body'); if(document.getElementsByTagName('body2')[0]) // проверяем наличие body2 (для сравнения) alert('good body2'); else alert('bad body2'); } </script> И залил полученную страницу на хостинг. Попробуй зайти на эту страницу - http://mscript.biz/body_test.html Какие алерты сработали? Почему так получилось?
Человеку явно нужно было одно событие, а не портянка. Он же не спрашивал как правильнее создать обработчик для дома. Я понимаю, что можно вешать много обработчиков на онлоад и что лучше писать кроссбрауз attachEvent. Но если уж на то пошло, то ещё более правильным способом будет вообще использовать ооп, в котром будет главный объект, а у него метод init. Который собсна будет запускаться из window.onload = function () { mainClass.init() };
M_script, хм, интересно, а ты уверен что на этом не запинаются старые браузеры? Просто я судил из чистой логики - нет тега => нет обьекта. Melfis, да, именно так. Но ООП я бы не стал юзать, так как если это, например, ПП какая-нибудь или код счетчика или сторонний плагин - то тогда пришлось бы править js-код исходной страницы, чтобы все сделать на ООП.
JS работает не с HTML-файлом, а с DOM. Браузер перед отображением страницы устраняет ошибки кода и приводит к стандарту HTML. Например, опера видит код PHP: <!a> <b c d/e=/f= g=''> так PHP: <!--a--> <b c="" d="" e="/f="></b> p.s.: простой, но полезный инструмент - http://html5sec.org/innerhtml