tooltip из Iframe
Есть код, который работает как всплывающая подсказка при наведение на картинку:
$(function() { $(".picture").tooltip({ delay: 0, showURL: false, bodyHandler: function() { return $("<img/>").attr("src", this.src); } }); }); Возникла необходимость сделать, чтобы эта подсказка появлялась не в iframe а в странице куда загружается Iframe. Пишу в загрузочную страницу код, но не знаю как правильно. $(function() { $('#iframe').contents().find('.picture').html(); var loader=document.getElementByTagName('BODY'); loader.innerHTML= $(".picture").tooltip({ delay: 0, showURL: false, bodyHandler: function() { return $("<img/>").attr("src", this.src); } }); }); |
Blizzart,
1. Адрес фрейма и страницы с одного хоста ? |
Deff, здравствуйте!
Да забыл написать, что проблем с безопасностью нет, так как с одного хоста. |
Цитата:
Если да - то опишите - как их выставлять |
Вообще по центру экрана хотел выравнивать, хотя это не столь важно.
|
Blizzart,
Размещаете нужного размера div на основной странице, центрируете - скрываете display:none; -cюда будем закидывать подсказку из фрейма <div id=tooltipStorag style="display:none"></div> При возникновении/обработке подсказки Придаете id данной подсказке (к примеру "IDtooltip" и далее $("#IDtooltip").appendTo("#tooltipStorag",parent.document.body) $("#tooltipStorag",parent.document.body).show() |
Я решил проверить пока в iframe
Ничего не придумал лучше наведения курсора для Цитата:
$(function() { $(".picture").tooltip({ delay: 0, showURL: false, top: 500, bodyHandler: function() { return $("<img />").attr("src", this.src); } }); $(".picture").mouseover(function() { $("#IDtooltip").appendTo("#tooltipStorag"); $("#tooltipStorag").show(); }); }); |
Цитата:
$(".picture").attr("id","IDtooltip") Хотя он Вам тут и не нужен $(".picture").mouseover(function() { $(this).clone().appendTo("#tooltipStorag"); $("#tooltipStorag").show(); }); |
$(function() { $(".picture").tooltip({ delay: 0, showURL: false, top: 500, bodyHandler: function() { return $("<img />").attr("src", this.src); } }); $(".picture").mouseover(function() { $("#tooltip").appendTo("#tooltipStorag", parent.document.body); $("#tooltipStorag", parent.document.body).show(); }); }); вот так работает как надо только в самом фрейме! div#tooltip оказывается создается автоматически. но на загрузочной странице срабатывает только "show();", а подсказка не помещается, даже так $('#i_iframe').contents().find('#tooltip').appendTo("#tooltipStorag", parent.document.body); |
Blizzart,
Есть тестовая Инет страничка ? |
http://188.134.88.186/dictinory.html#i?3
вот, например :) div#tooltipStorag в div#content скрипт в каждом iframe - dictinory.js |
Blizzart,
Повяз в фреймах Можешь текущий скрипт поставить на нижний фрейм ? ( не файлом -а скриптом на страницу ) - тяжко елозить по загрузочным файлам (при удаче -потом всунешь обратно Ксать я не понял - у тьву .tooltip в самом фрейме не всплывает ? ( Если открыть сам отдельный фрейм ? и елозить по нему |
хорошо! в букве "Э" скрипт
открыл отдельно всё работает |
|
1. Добейстесь нормального всплытия подсказки в одном отдельном фрейме...
Далее я поправлю |
В том-то и проблема что она криво всплывает во фрейме... но если грузить в div#tooltipStorag, то нормально можно расположить
|
Blizzart,
Нун добиться нормально всплытия (без центрирования и наших добавлений) на самой страницы фрейма - далее мну доковыряет (Но думаю уже к завтра - чот устал |
сделал. хорошо, тогда до завтра :thanks:
|
Оказалось можно сделать проще. На родительскую страницу надо написать
$("#[a-z]_iframe").load(function () { var childElements = $(this).contents().find("#tooltip"); $("#tooltipStorag").append(childElements); }); а в фрейме можно ничего не добавлять, так как tooltip и так появляется и исчезает. Только я не понял как правильно поместить регулярное выражение перед названием iframe, чтобы не добавлять класс. сейчас не подставляет любую букву |
Blizzart,
$("#[a-z][a-z]_iframe").load(function () { var childElements = $(this).contents().find("#tooltip"); $("#tooltipStorag").append(childElements); }); Или $("iframe[id$='_iframe']").load(function () { var childElements = $(this).contents().find("#tooltip"); $("#tooltipStorag").append(childElements); }); |
Deff,
Спасибо! сработал только второй вариант. Жаль, мне не удалось выравнить тултип по центру экрана... |
Центрировал!:dance: Поставил в плагине тултип left и top 0
и добавил такой скрипт на страницу: function getClientWidth() { return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth; } function getClientHeight() { return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight; } jQuery.fn.center = function() { var w = $(window); this.css("position","absolute"); this.css("top",(getClientHeight()-this.height())/2 + "px"); this.css("left",(getClientWidth()-this.width())/2 + "px"); return this; } $("#tooltip").center(); |
Часовой пояс GMT +3, время: 10:55. |