2010-05-17 1 views
0

Я создаю скрипт greasemonkey, и мне нужна ссылка, чтобы перейти вперед и изменить текущий html и позволить пользователю щелкнуть обратно, чтобы перейти на исходную страницу.новая страница/вперед в javascript

Как я могу это сделать? используя jquery + greasemonkey + javascript. Ориентация на firefox в основном.

-edit- http://jsfiddle.net/ похоже. Если вы пишете произвольный html в разделе html, нажмите пробег, измените html и нажмите пробег еще раз. Вы сможете щелкнуть назад/вперед, чтобы увидеть изменение вывода (однако поле ввода html остается таким же). Я использую firefox для просмотра этого. Это эффект, который я хочу.

Кажется, что магия выполнена в строке 91. Представляет ли она форму в рамке (возможно, в рамке результатов?), И это вызывает движение в истории?

88 run: function(e) { 
89 e.stop(); 
90 Layout.updateFromMirror(); 
91 document.id(this.options.formId).submit(); 
92 this.fireEvent('run'); 
93 }, 
+0

Использование «вперед», «текущий» и «задний» немного неясно. Вы хотите отредактировать документ, который просматривает пользователь, но разрешить им впоследствии восстановить исходную версию? – Quentin

+0

Да. Но специально используя кнопку браузера вперед/назад/историю. даже клавиша delete/backspace вернет их на исходную страницу. Я просто не хочу эмулировать эту функцию, подключая клавиатуру или используя ссылку, чтобы получить оригинал. – 2010-05-17 08:23:21

ответ

1

Похоже, вы хотите использовать history manager. Вы можете отслеживать сделанные вами изменения и отменить их, когда пользователь вернется, или, возможно, вызвать функцию обновления страницы.

2

Я не знаю, возможно ли это вообще, потому что это сам браузер, который заботится о истории навигации. Новый элемент истории добавляется только при посещении новой страницы.

Если я не ошибаюсь, вы хотели бы, чтобы пользователь включил/выключил изменения, внесенные на страницу, без включения/отключения greasemonkey и перезагрузки страницы.

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

EDIT 1:
Кажется, что jsfiddle.net загружает новую страницу для этого. Используя firebug, вы можете видеть, что он не выполняет никакого запроса AJAX для запуска кода, он просто загружает новую страницу (может быть, на той же странице с разными параметрами, но, тем не менее, она загружает страницу.)

EDIT 2:
Да, возможно, это загрузка страницы в рамку. Как вы можете видеть из HTML:

<iframe name='result' frameBorder='0'></iframe> 

Но это не меняет вашу ситуацию. Если вы хотите, чтобы ваша логика находилась в вашем сценарии greasemonkey, вы не можете загрузить новую страницу. В противном случае вы должны где-то загрузить веб-страницу и загрузить ее в iframe, передав ей HTML-код, который вы хотите изменить: это определенно не то, что вы хотите сделать.

+0

Да, похоже, я этого не хочу. Наверное, я могу сделать большую обратную связь. – 2010-05-17 08:59:00