Помогите с <iframe> блокировкой открытия
Здравствуйте! В ходе создания сайта возникла проблема которую не могу решить, я использую <iframe> и задача такая, чтоб в окне <iframe> пользователь не смог перейти по ссылке вне <iframe>, то есть страница не открывалась в новой вкладке отдельно, и нельзя было скопировать адрес на ресурс находящийся в <iframe>.
Оптимальное решение заблокировать правую кнопку мышки и выделение-копирование текста. Я использовал скрипт запрета - работает по всей странице кроме окна <iframe> - в окне <iframe> делай что хочешь! Господа программисты, кто сталкивался с подобной ситуацией, помогите!! ВОТ ПОЛНЫЙ КОД: <style> #mr { width:100%; height:900px;align: right;} </style> <div style="position: relative; width: 100%; height: 900px;"> <div style="left:0px; background: #708090; position: absolute; z-index: 2; width: 258px; height: 900px;"></div> <div style="right:0px; background: #708090; position: absolute; z-index: 3; width: 275px; height: 900px;"></div> <div style="background: #708090; position: absolute; z-index: 5; width: 100%; height: 159px;"></div> <div style="background: #708090; position: absolute; z-index: 4; width: 99%; bottom: 0; height: 87px; "></div> <div style="margin-top: 0px; z-index: 1; position: relative;"> <script type="text/javascript"> document.ondragstart = test; document.onselectstart = test; document.oncontextmenu = test; function test() { return false; } document.oncontextmenu; function catchControlKeys(event){ var code=event.keyCode ? event.keyCode : event.which ? event.which : null; if (event.ctrlKey){ // Ctrl+U if (code == 117) return false; if (code == 85) return false; // Ctrl+C if (code == 99) return false; if (code == 67) return false; // Ctrl+A if (code == 97) return false; if (code == 65) return false; }} </script> <iframe id="mr" frameborder="no" src="http://www.microtron.zp.ua/goods#i"> Ваш браузер не поддерживает плавающие фреймы! </iframe> </div> </div> PS: Хостинг от Ucoz. Для наглядности вот адрес сайта: http://citicom.at.ua/ :help: |
у iframe свое windows к которому вы не имеете доступа и не можете ничего заблокировать
|
MVS,
1. вставьте фрейм полным рамером (он у Вас 666px на 3007px в div с position:relative; 2. Оберните этот div еще одним с размерами нужного вам окна просмотра и overflow-y: auto; 3. Прямо прмо перед фреймом вставьте прозрачную однопиксельную gif-картинку с размерами 100% Х 100% position:absolute;z-index:100; |
Да, но:
пользователь должен иметь возможность внутри фрейма просматривать весь товар имеющийся на сайте который внутри фрейма, то есть, левая кнопка должна кликать по товару, а правая нет, ведь все нарушения происходят именно из-за правой (открыть ссылку в новом окне / открыть в новой вкладке / скопировать адрес сайта и т.д) Как реализовать только левую активную кнопку мышки? |
MVS,
Вообще вру - выделить текст - наверняка не удастся - ищите в инете кроссдоменный аякс для get запросов |
Направьте пожалуйста в правильное русло - как проникнуть сквозь картинку? Первое условие с полупрозрачной картинкой выполнил
вот http://citicom.at.ua/ Как быть дальше? |
Цитата:
|
Цитата:
Цитата:
Или проксируйте на сервере (серверным запросом на свою страницу, а эту страницу вставляете уже к себе |
Цитата:
|
Подскажите как это реализовать?
очень нужно, я являюсь партнером этого сайта, а прайсы постоянно делать очень долго - частое изменение товара, а так дал адрес сайта( уже своего), потребитель выбрал товар - пришел ко мне и заказал - а так пойдет к ним напрямую. Нашел похожую тему http://javascript.ru/forum/dom-windo...j-vkladke.html реализация мне не понятна, опишите пожалуйста более подробно. У кого есть еще какие нибудь мысли? Жду вашей помощи! |
Цитата:
|
MVS,
Тогда убирайте просто покрывающую картинку при наведении мыши и ставьте снова при правом нажатии - но без выделения - имхо кустарщина - ну захотел я скопировать данные - ручкой сейчас никто не пишет - ан фиг Найдите кросс аякс - там нет сложностей или у партнёра просите json файл страницы - это решает большинство проблем |
MVS
вот они пишут для партнеров предлагаем удобный механизм работы с помощью нашего сайта, который обновляется с каждым новым приходом товара на склад (т.е. на сайте, Вам всегда доступны актуальные остатки на складе и цены на продукцию). Узнайте как это работать с их сайтом но чтобы товар получали через Вас |
Ну киньте ссылку - скорее всего это правда - поскольку при клике и они сами подгружают данные
|
Цитата:
Господа программисты - присоединяйтесь, не проходите мимо! |
И если не хочешь чтоб копировали, то надо закрывать старое доброе ctrl+insert .
Но ,если я не ошибаюсь ,где-то в системе можно переназначить клавиши копирования , поэтому необходимо решать проблему глобальнее. На счет AJAX можешь почитать http://javascript.ru/ajax/cross-domain-scripting ,но самому пользоваться cross-domain еще не доводилось |
|
Сколько потрачено времени, и ни к чему не пришел.
Может я не правильно выразил задачу? Пользователь должен иметь возможность внутри фрейма просматривать весь товар имеющийся на сайте который внутри фрейма (левая кнопка должна кликать по товару) но правая кнопка (открыть ссылку в новом окне / открыть в новой вкладке / скопировать адрес сайта и т.д) работать не должна, но или если работает, тогда содержимое ифрейма не должно открываться в новом окне Как это реализовать? это все здесь http://citicom.at.ua/ |
Цитата:
window у основного документа и фрейма не перекрываются-то есть любое событие происходит или в одном окне или в другом(события не всплывают) А как Вы теоретически даже можете из одного окна запретить событие в другом доступ к которому Вы не имеете?Никак Я с самого начала же написал |
vadim5june,
Тут мы не во фрейме делали - а накрывали фрейм прозрачкой из главного окна |
тогда как мне здесь предложили, поставить прозрачный фон на весь ифрейм, а убирать ее по нажатию левой кнопки, по правой она остается и ничего не происходит, то есть нажали левую, прозрачный фон убрался - нажалась ссылка(открылась)
Как написать такое? Читал есть такое: function fixWhich(e) { if (!e.which && e.button) { // если which нет, но есть button... if (e.button & 1) e.which = 1; // левая кнопка else if (e.button & 4) e.which = 2; // средняя кнопка else if (e.button & 2) e.which = 3; // правая кнопка } } В скриптах не силен, в HTML норм. |
Цитата:
Если вы нажмете mausedoun на перекрывающем элементе и потом его уберете в фрейме никакого дауна не будет а когда он второй раз кликнет уже во фрейме вы вообще об этом не узнаете никак из главного окна |
vadim5june,
Ксать интересно: - еще не экспериментировал - будет ли считывацо позиция курсора из главного окна - коли он над фреймом? (*Вдруг ... пришло в голову |
Цитата:
|
Цитата:
Убираем по наведению мыши, после уборки запускаем фликер генерацию этой жа картинки с частотой раз в 100ms с установкой на 10ms - которая и отследит правое нажатие - способ проверен |
Цитата:
|
Но а все-таки, как написать скрипт убирания фона по клику левой кнопки?
Если можно - пример в студию! Буду экспериментировать |
Цитата:
|
Ну а все-таки, кто может выложить скрипт убирания изображения по клику мышки, я знаю есть функция clickdown и clickup,
function fixWhich(e) { if (!e.which && e.button) { // если which нет, но есть button... if (e.button & 1) e.which = 1; // левая кнопка else if (e.button & 4) e.which = 2; // средняя кнопка else if (e.button & 2) e.which = 3; // правая кнопка } } но как ее использовать, я не знаю... слаб в яваскриптах в НТМL норм. Заранее спасибо тому, кто поможет! |
MVS,
Завтра постараюсь |
Цитата:
|
Цитата:
Можете показать на примере это событие? |
Цитата:
<div style='width:100px;height:50px;background:yellow' onclick=this.parentNode.removeChild(this)>click me</div> |
Цитата:
А практически наврядли- нужно пробовать |
вот я и хочу попробовать, но при этом нуждаюсь в помощи!
vadim5june, скажите, как вернуть назад по клику вверх? |
|
Цитата:
Яваскрипты чета даются тяжело... Кто может ответить - почему в хроме не обрабатываются те события, которые обрабатываются в мозиле? |
Цитата:
|
Цитата:
Вот это в хроме не работает-почему? <script type="text/javascript"> function resize(img, x, y) { img.width = x; img.height = y; } </script> </head> <body> <p><img src="images/figure.jpg" alt="" onmouseout="resize(this, 100, 111)" onmouseover="resize(this, 200, 222)"></p> </body> Не хочу заморачиваться, но это факт! Может хром у меня кривой.... |
Цитата:
<body onmousedown='document.getElementById("d1").style.top="500px"' onmouseup='document.getElementById("d1").style.top="5px"'> <div id=d1 style='position:absolute;top:5px;width:100px;height:50px;background:yellow' >click me</div> |
Часовой пояс GMT +3, время: 21:32. |