Я новичок в JS и букмарклетах.
Я модифицирую существующий код; который написан так (я упрощаю фактический код для образовательных целей):
javascript: 1 && function(e) {
var t = "";
t += "<style>",
t += ".somestyle-header{ background-color: #0171C5 !important }",
t += "</style>",
t += '<div class="somestyle-header">Test</div>',
t += "";
e("body").append("<div id='something'> </div>"), e("#something").append(t)
}($myvariable);
Теперь это работает и создает DIV с именем "что-то" , а затем добавляет все в переменную "t" к этому. Другими словами, он добавляет все, что находится в переменной "t" , в HTML-код текущего сайта (учитывая, что на сайте установлено значение $ myvariable ).
Я пытаюсь сделать что-то подобное, но у меня есть следующие вопросы:
- Как я могу удалить это 1 в самом начале функции и заставить ее работать?
- Как я могу заставить его работать на каждой странице? Независимо от
$ myvariable в конце, присутствует или нет.
Кроме того, если кто-то может объяснить, что делает эта 1 в самом начале и что $ myvariable в самом конце и почему этот код не работает, если я удаляю какую-либо из этих частей?
Я надеялся, что смогу сделать что-то вроде этого:
javascript: (function() {
if (!($ = window.jQuery)) {
script = document.createElement( 'script' );
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
script.onload=launchTheSplash;
document.body.appendChild(script);
}
else {
launchTheSplash(e);
}
function launchTheSplash(e) {
var t = "";
t += "<style>",
t += ".somestyle-header{ background-color: #0171C5 !important }",
t += "</style>",
t += '<div class="somestyle-header">Test</div>',
t += "";
e("body").append("<div id='something'> </div>"), e("#something").append(t)
}
}());
Так что:
- Я проверяю наличие JQuery
- Я запускаю свой букмарклет независимо от существования переменной $ myvariable
Но мой код, похоже, не работает вообще, если я удаляю 1 в начале или переменную $ myvariable в конце. Если я это сделаю, я получу Uncaught TypeError: e не является функцией
Надеюсь, это достаточно ясно. Заранее спасибо!
Edit:
Я попробовал следующее предложение:
javascript: (function() {
if (!($ = window.jQuery)) {
script = document.createElement( 'script' );
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js';
script.onload=launchTheSplash();
document.body.appendChild(script);
}
else {
launchTheSplash();
}
function launchTheSplash(e = $) {
var t = "";
t += "<style>",
t += ".somestyle-header{ background-color: #011515 !important }",
t += "</style>",
t += '<div class="somestyle-header">Test</div>',
t += "";
e("body").append("<div id='something'> </div>"), e("#something").append(t);
}
}());
Но, похоже, он не работает на определенных страницах; например, если я пытаюсь запустить букмарклет на веб-сайте www.apple.com, он возвращается с Uncaught TypeError: e не является функцией
Любые идеи приветствуются! Еще раз спасибо!