Самая сложная часть этого - убедиться, что сценарий не срабатывает на страницах, которые не являются перенаправителями. Для этого используйте regex @include
.
После этого это просто вопрос извлечения целевого сайта и изменение location
. Вот полный скрипт:
// ==UserScript==
// @name _Skip redirects
// @include /site#http/
// @run-at document-start
// ==/UserScript==
var targetSite = location.href.replace (/^.+?site#(http.+)$/, "$1");
//--- Use assign() for debug or replace() to keep the browser history clean.
location.assign (targetSite);
//location.replace (targetSite);
Обратите внимание, что @run-at document-start
не является строго необходимым, но он может сэкономить время отклика сценария перенаправления на справедливую сумму.
От страницы Apple на" Формальные Протоколы ":
Дополнительные методы Протокола могут быть отмечены как дополнительное использование @optional ключевого слова. При соответствии @optional модальному ключевому слову существует @required ключевое слово для формального обозначения семантики поведения по умолчанию. Можно использовать @optional и @required для разделения протокола в разделы, как Вы считаете целесообразным. Если Вы не указываете ключевого слова, значение по умолчанию является @required.
@protocol MyProtocol
- (void)requiredMethod;
@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;
@required
- (void)anotherRequiredMethod;
@end
Используйте @optional
ключевое слово перед Вашим объявлением метода для создания этого дополнительным. Простой как это!
// myProtocol.h
@protocol myProtocol
- (void)myMandatoryMethod:(id)someArgument;
@optional
- (void)myOptionalMethod:(id)someArgument;
@end
// myClass.m
@interface myClass : someSuperClass <myProtocol>
//...
@end