widgin

Рейтинг
41
Регистрация
14.11.2012
danforth:
Грузите в popup iframe, туда стили и js не встраиваются.

А как это сделать, чтобы popup будучи во фрейме загружался поверх содержимого прелендинга? Я пробовал. У меня не получалось.

lexter:
Для начала я думаю стоит взять бубен и немного помолиться!
Пунктом вторым можно выложить пациента или хотя бы код.....

Пример кода Pop-up окно без стилей прелендинга:

https://jsfiddle.net/h455s2k1/

Пример кода Pop-up окно со стилями прелендинга:

https://jsfiddle.net/yuy1e9u1/

tommy-gung:
в чем проблема использовать абстрактные названия у классов попап?

Да нет проблемы, они итак уникальны. Вот только свойства стилей назначенные тегу body все равно наследуются дочерним тегам popup окна. Меняется свойства шрифта, размер окна и кнопка закрытия.

Еще раз большое вам спасибо. Вы мне очень сильно помогли.

webjey:
До фавиконки можно так добраться:


var head = document.head || document.getElementsByTagName('head')[0];
var favicon= head.querySelector("link[rel='shortcut icon']").href ;


Есть еще вот такой трюк - https://plus.google.com/_/favicon?domain=тут_путь_до_лендинга

т.е. чтобы на своей странице отобразить, например,фавикон яндекса можно написать так

<link rel="shortcut icon" href="https://plus.google.com/_/favicon?domain=http://ya.ru/"/>

Спасибо. А как-то можно это сделать без указания адреса к иконке в коде? То есть, что бы это работало примерно так же как с title. Как я уже писал ранее, во фрейме сайта делается сплит-тест прелендингов. То есть при каждом новом посещении загружается во фрейме одна из нескольких указанных страниц. И все они загружаются поочередно в цикле с помощью этого кода:

<?

$flag = file_get_contents('tmp');

if($flag == 1){
$url = 'http://site.ru/1/?dp2=pr1&';
file_put_contents('tmp', 2);
}elseif($flag == 2){
$url = 'http://site.ru/2/?dp2=pr2&';
file_put_contents('tmp', 3);
}else{
$url = 'http://site.ru/3/?dp2=pr3&';
file_put_contents('tmp', 1);
}

?>

<iframe id="ifr" src="<?php print $url.$_SERVER['QUERY_STRING'];?>" FRAMEBORDER="0"></iframe>

Соответственно я не знаю заранее какой путь будет к фавиконке, потому как не знаю какая страница будет загружена.

Подскажите, пожалуйста, возможность делать это без указания пути к фавиконке. Если конечно такая возможность есть.

А можно ли как-то помимо title еще и из фрейма передать favicon? Чтобы на странице, в которой расположен iframe отображалась в браузере favicon сайта из фрейма (если в нем вообще есть favicon.ico). Если да, то могли бы вы webjey подсказать как это сделать? Если кончено это вас не затруднит.

webjey:
Ошибки у вас из-за того, что при загрузке через file_get_contents подгружаются скрипты только
с абсолютными путями, относительные пути типа

<script language="javascript" src="script.js"></script>
нет.
Что касается моего скрипта, то похоже прилетает сообщение от другого обработчика , можно например так переписать
main.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>main</title>
</head>
<body>

<iframe src="frame.html" frameborder="0" id="main-content-iframe"></iframe>
<script language="JavaScript">
(function() {

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
var data=JSON.parse(e.data);
if (data.command=='getTItle'){
document.title=data.title;
}
},false);
})();

</script>


</body>
</html>


frame.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>iframe title here</title>
</head>
<body>
iframe content
<script language="JavaScript">
(function() {
var json = {
command:'getTItle',
title: document.title
};
parent.postMessage(JSON.stringify(json),'*');
})();
</script>
</body>
</html>

Огромное спасибо. Теперь все работает во всех браузерах и даже с абсолютными путями.

webjey:
тут тоже не работает- http://n96847u2.bget.ru/frame/ ?
проверяете на домене? т.е урл должен быть moysait.ru/main.html
какой браузер?
что пишет в консоли?

В Firefox не работает, в том числе и по ссылке. В Chrome и Opera все нормально. В консоли Firefox следующие ошибки http://screencast.com/t/fEXHzdrE065

url указан не файлом, а ссылкой. Так как в ссылке этого фрейма передаются метки (с помощью php) и делается сплит-тест прелендингов.

<?
$flag = file_get_contents('tmp');

if($flag == 1){
$url = 'http://site.ru/1/?dp2=pr1&';
file_put_contents('tmp', 2);
}elseif($flag == 2){
$url = 'http://site.ru/2/?dp2=pr2&';
file_put_contents('tmp', 3);
}else{
$url = 'http://site.ru/3/?dp2=pr3&';
file_put_contents('tmp', 1);
}

?>

<iframe id="ifr" src="<?php print $url.$_SERVER['QUERY_STRING'];?>" FRAMEBORDER="0"></iframe>
webjey:
главная страница

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>main</title>
</head>
<body>

<iframe src="frame.html" frameborder="0"></iframe>
<script language="JavaScript">
(function() {
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
document.title=e.data;
},false);
})();

</script>
</body>
</html>


iframe

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>iframe title here</title>
</head>
<body>
iframe content
<script language="JavaScript">
(function() {
var url = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
parent.postMessage(document.title,url);
})();
</script>
</body>
</html>


Кстати, похожим методом пользуется гугл в своей рекапче.

Спасибо, но у меня почему-то появляется в тайтле этот код вместо текста:

foxi:
если взять нужно с этого же сайта своего, то взять можно.

Да обе страницы на одном и том же сайте. Вот только как его взять и потом еще и разместить содержимое в title страницы, в которой все загружается.

Всего: 60