LINUX.ORG.RU

Как в greasemonkey поместить текущую страницу в левый фрейм, а другую в правый?


0

1

Есть страница (со своими фреймами возможно), надо при помощи greasemonkey в FF создать фреймсет, в него добавить два фрейма. в первом должна быть сама страница, во втором другая страница. Как это можно реализовать? Я думал это сделать при помощи прокси, но не нашел проксей, которые могут делать внешний фильтр через stdin/stdout.

http://www.javascriptkit.com/frame1.shtml вот тут в первом же примере видно, что мне надо.

>надо при помощи greasemonkey в FF создать фреймсет, в него добавить два фрейма. в первом должна быть сама страница, во втором другая страница. Как это можно реализовать?
На подобный вопрос можно ответить только «Ну, лучше всего, конечно, хорошо и аккуратно реализовать».

>Я думал это сделать при помощи прокси
Зачем же это делать при помощи прокси?

Почему нельзя просто добавить на страницу элементы <frame>? В конце концов, можно ведь после загрузки страницы вызвать document.write и полностью заменить код страницы.

proud_anon ★★★★★
()

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

proud_anon ★★★★★
()

Итак, я практически зафейлил. Ввиду больших странностей Greasemonkey и Огнелиса самое лучшее, что я смог, вот:

// ==UserScript==
// @include http://www.linux.org.ru/
// @include about:blank?goto=*
// ==/UserScript==
var x = unsafeWindow.document.location.href.match(/^about:blank\?goto=(.*)/);
if(x) {
	var document = unsafeWindow.document;
	document.body.innerHTML = '<iframe src="' + x[1] + '"></iframe><iframe src="http://www.yandex.ru"></iframe>';
}
else if(unsafeWindow == unsafeWindow.top.wrappedJSObject) {
	var loc = unsafeWindow.location.href;
	unsafeWindow.location.replace("about:blank?goto=" + loc);
}
Хотя это и работает (на главной ЛОРа), это очень грязный хак. document.write действительно не работает так, как ожидалось. При очистке имеющейся страницы iframe, как я ни крутил, оставался девственно белым.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

0о Я бы до такого в жизни не додумался. Щас затестчу :))

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от proud_anon

скрипт создаёт два очень маленьких фрейма. сделать так, чтобы одним фрейм полностью занимал правую сторону, а другой - левую, можно? типа 50/50.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от proud_anon

// ==UserScript==
// @include http://www.linux.org.ru/
// @include about:blank?goto=*
// ==/UserScript==
var x = unsafeWindow.document.location.href.match(/^about:blank\?goto=(.*)/);
if(x) {
var document = unsafeWindow.document;
document.body.innerHTML = '<iframe src=«' + x[1] + '» width=«49%» height=«100%»></iframe><iframe src="http://www.yandex.ru" width=«49%» height=«100%»></iframe>';
}
else if(unsafeWindow == unsafeWindow.top.wrappedJSObject) {
var loc = unsafeWindow.location.href;
unsafeWindow.location.replace(«about:blank?goto=» + loc);
}

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от proud_anon

а как сделать так, чтобы при определённых условиях в левом фрейме (например, в URL содержится «123»), обновлялась вся страница? :) т.е. если я буду ходить по лору, а потом внезапно зайду на "http://www.linux.org.ru/people/123/profile", то у меня вся страница обновится. м? и ещё не через жопу (хотя бы, чтобы левая страница 2 раза не загружалась) это сделать реально? :) В Scriptish ( https://addons.mozilla.org/ru/firefox/addon/scriptish/ ) те же проблемы, что и в макаке?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

>скрипт создаёт два очень маленьких фрейма. сделать так, чтобы одним фрейм полностью занимал правую сторону, а другой - левую, можно? типа 50/50.

Можно, почему нет? Это уже стандартными средствами HTML и CSS решается.

proud_anon ★★★★★
()
Ответ на: комментарий от ktulhu666

>а как сделать так, чтобы при определённых условиях в левом фрейме (например, в URL содержится «123»), обновлялась вся страница?
Пусть на всем ЛОРе работает юзерскрипт, которые иногда сигналит parent'у, чтобы вся страница обновилась.

>и ещё не через жопу (хотя бы, чтобы левая страница 2 раза не загружалась) это сделать реально?
Если бы я знал как, я бы сделал. У меня не получилось.

>В Scriptish ( https://addons.mozilla.org/ru/firefox/addon/scriptish/ ) те же проблемы, что и в макаке?
Не знаю.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

ну дык я потом и приложил пример, в котором 50/50

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от proud_anon

про scriptish я сказал к тому, чтобы ты попробовал первоначальные версии своего скрипта запустить на нём. у макаки реализация безопасности очень строгая. возможно поэтому. могу сразу сказать, что скриптиш и макака - не одно и тоже даже по обработки скриптов. например, твой скрипт не работает в нём.

Пусть на всем ЛОРе работает юзерскрипт, которые иногда сигналит parent'у, чтобы вся страница обновилась.

как это на всё лоре? разве макака умеет в фреймы встраивать JS? если бы это было так, то твой скрипт кучу фреймов встроил бы в другие фреймы (левые). может, я что-то не понял?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

>про scriptish я сказал к тому, чтобы ты попробовал первоначальные версии своего скрипта запустить на нём
У меня нет времени этим заниматься. Попробуй самостоятельно это сделать. Там всего-то был вызов «document.write(<новый HTML-код документа>)». Ну или дождись, пока на ЛОРе кто-нибудь подскажет, кто имеет опыт использования Scriptish.

>разве макака умеет в фреймы встраивать JS
Да.

>если бы это было так, то твой скрипт кучу фреймов встроил бы в другие фреймы (левые).
Именно поэтому я написал эту строчку:

else if(unsafeWindow == unsafeWindow.top.wrappedJSObject)

proud_anon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.