2016-06-23 1 views
1

Я не знаю Javascript, и я пытаюсь создать сценарий Greasemonkey, который при посещении определенного веб-сайта добавляет некоторые вещи в URL-адрес, чтобы он автоматически перенаправлял туда. Этот веб-сайт содержит видеоролики и фотографии людей, а при нажатии на кого-то я хочу, чтобы он автоматически добавлял необходимую ссылку для поиска только для фотографий. Я заменил фактический веб-сайт в коде макетом, поскольку он не подходит для всех возрастов. Вот то, что я до сих пор (обратите внимание, что комментарий знаки должны быть там, и она по-прежнему получает чтение):Добавить в URL один раз для перенаправления в Javascript

// ==UserScript== 
// @name  CostlyTwos Pictures Only 
// @namespace costlytwospo 
// @description Automatically redirects to pictures-only when browsing CostlyTwos 
// @include  http://www.costlytwos.com/html/a_links/* 
// @include  www.costlytwos.com/html/a_links/* 
// @version  1.0 
// @run-at  document-start 
// ==/UserScript== 

window.location.href = window.location.href + "links/index1-default-pics.shtml"; 

Это просто несколько раз добавляет «ссылки/INDEX1-умолчанию-pics.shtml» до конца URL-адреса, неопределенно. Я также попытался добавить оператор if, который проверяет, находится ли в URL-адресе слово «по умолчанию» (ссылки на сайте очень согласованы, поэтому не требуется никаких сложных проверок), чтобы остановить его, как только это будет сделано. Этот код выглядит следующим образом:

if (window.location.search.indexOf("default") != -1) { 
window.location.href = window.location.href + "links/index1-default-pics.shtml"; 
} 

Однако это абсолютно ничего не делает, так как, если сценарий не существует. Google получил меня так далеко, но, поскольку я не знаю Javascript, я не уверен, куда идти отсюда. Типичный URL для этого места, когда кто-то выбора выглядит следующим образом:

www.costlytwos.com/html/a_links/NameHere/

А фотографии только ссылка на NameHere будет выглядеть так:

www.costlytwos .com/html/a_links/NameHere/ссылки/index1-умолчанию-pics.shtml

ответ

0

Это просто несколько раз добавляет "ссылки/iNDEX1-умолчанию-pics.shtml" до конца URL, на неопределенное время

Это потому, что сценарий загружается на каждую страницу, на которую вы переходите. Когда вы закончите навигацию, он снова вызовет сценарий.

У вас был правильный инстинкт, чтобы проверить, был ли URL-адрес уже в правильном формате. Проблема в том, что тест неверен.

window.location.search.indexOf("default") != -1

Вы accessing the search property (?var=123 часть URL), когда то, что вы, вероятно, хотите посмотреть на это href свойство:

window.location.href.indexOf("default") != -1 

Даже с этим исправлением, если default отображается в любом месте URL-адреса (например, если пользовательское имя пользователя содержит «по умолчанию»), тогда ваш скрипт не будет выполнять перенаправление. Возможно, вам придется сломать URL-адрес на несколько частей (используя что-то вроде string.split или regular expression), прежде чем вы сможете быть уверены, что ваш скрипт не работает. Если вы спуститесь по этому маршруту, использование window.location.pathname, вероятно, будет лучше, чем свойство window.location.href.

+1

Спасибо за информацию! Я изменил поиск на href, и он вернулся к тому, чтобы ничего не делать, но после того, как я также сменил оператор на == -1, он внезапно начал работать отлично. Окончательный код выглядит так: 'if (window.location.href.indexOf (" default ") == -1) { window.location.href = window.location.href +" links/index1-default- pics.shtml "; } ' Теперь он работает так, как я ожидал.Это только для меня и на основе того, как я просматриваю сайт, о котором идет речь, все будет хорошо. Мне не нужно чистить или сквошировать ошибки. Еще раз спасибо! – starrky