Нижеприведенный UserScript предназначен для работы на моей странице профиля твиттера (а не на временной шкале).Псевдоним пользователя Twitter влияет на страницы, отличные от предполагаемых (@ включенных)?
// ==UserScript==
// @name CoolScript
// @include https://twitter.com/IJNanayakkara
// @include https://twitter.com/IJNanayakkara/status/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @version 1.0
// @license GPL v3 or any later version (http://www.gnu.org/copyleft/gpl.html)
// @grant GM_addStyle
// ==/UserScript==
function prependToTweet(jNode) {
jNode.prepend("Hello World ");
}
waitForKeyElements("p.js-tweet-text", prependToTweet);
Что он делает, это добавление данной текстовой строки в начало каждого твита на странице.
Хотя сценарий делает то, что я хочу, у меня есть две проблемы.
1. Сценарий влияет на страницы, отличные от страниц, определенных в @include
.
Я устанавливаю скрипт и перехожу к профилю Twitter. И у всех твитов есть строка Hello World, добавленная в начало. Это ожидается.
Но тогда я иду к моей странице шкалы времени и все твиты над там также есть Hello World строку прилагаемых к ним, которое не является намеченной поведение.
Мне нужно знать, почему это происходит.
2. Hello World строки строки самих дубликатов.
Скажем, я нажимаю на твит, чтобы просмотреть его на одной странице. Работает отлично.
Затем я возвращаюсь к моей странице профиля.
Если я немного другую страницу и вернуться снова, строка повторилось еще раз.
Эти две проблемы, я столкнулся. Я предполагаю, что это происходит из-за AJAX, но я не могу понять, как справиться с этим.
Вау, который стал сложным, чем я сначала думал. Я протестировал скрипт в Firefox, и он работает хорошо! Спасибо. Не работает в Chrome, хотя по какой-то причине, но сейчас все в порядке. Можете ли вы объяснить, что происходит внутри предложения else функции 'fireMainCode()', пожалуйста? – Isuru
Да, выяснилось, что Twitter в Chrome делает что-то, чтобы перекрыть некоторые из функций MutationObserver. Не хочу тратить много времени на это. ... Это предложение 'else' отключает экземпляр' waitForKeyElements' при переходе с «страницы», где вы хотите, чтобы функция была на странице, где вы этого не сделали (* Проблема 1 * в вашем вопросе выше). –
Я вижу. Но почему существует шаблон регулярного выражения? В чем его цель? – Isuru