[Закрываются] скрытые функции Механика

У меня была та же проблема, когда мы использовали одну базу данных для двух приложений. Установка disableDatabaseInitialization="true" в разделе типа контекста работает для меня.



  


  
    
  

Подробнее https://msdn.microsoft.com/en-us/data /jj556606.aspx

12
задан Community 23 May 2017 в 12:33
поделиться

9 ответов

==UserScript==
...
@require http://ajax.googleapis.com/ajax/framework-of-your/choice.js
==/UserScript==
13
ответ дан 2 December 2019 в 02:59
поделиться

Ваш сценарий может добавить графику в страницу, даже если у Вас нет места для хостинга файлов через данные URIs.

Например, вот немного графической кнопки:

var button = document.createElement("img");
button.src = "data:image/gif;base64,"
    + "R0lGODlhEAAQAKEDAAAA/wAAAMzMzP///yH5BAEAAAMALAAAAAAQABAAAAIhnI+pywOtwINHTmpvy3rx"
    + "nnABlAUCKZkYoGItJZzUTCMFACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=="
somenode.appendChild(button);

Вот кодер изображения онлайн.

И статья Википедии о Данных стандарт URI.

10
ответ дан 2 December 2019 в 02:59
поделиться

Данные могут быть сохранены через загрузки страницы путем хранения его как предпочтительного значения Mozilla через GM_setValue(keyname, value).

Вот простой пример, который счета количеству раз, Ваш сценарий был выполнен - данным браузером:

var od = GM_getValue("odometer", 0);
od++;
GM_setValue("odometer", od);
GM_log("odometer=" + od);

Значения GM походят на cookie в том cookie, к значениям может только получить доступ порожденный домен, к значениям GM может только получить доступ сценарий, который создал их.

8
ответ дан 2 December 2019 в 02:59
поделиться

Сценарии механика часто должны искать содержание на странице. Вместо того, чтобы рыть через DOM, попытайтесь использовать XPath для определения местоположения узлов интереса. document.evaluate() метод позволяет Вам обеспечить выражение XPath и возвратит набор соответствия узлам. Вот хорошее учебное руководство для запущения Вас. Как пример, вот сценарий, я записал, что причины связываются в сообщениях phpBB3 для открытия на новой вкладке (в коже по умолчанию):

// ==UserScript==
// @name           New Tab in phpBB3
// @namespace      http://robert.walkertribe.com/
// @description    Makes links in posts in phpBB3 boards open new tabs.
// ==/UserScript==

var newWin = function(ev) {
    var win = window.open(ev.target.href);
    if (win) ev.preventDefault();
};

var links = document.evaluate(
        "//div[@class='content']//a[not(@onclick) and not(@href='#')]",
        document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var i = 0; i < links.snapshotLength; i++) {
    var link = links.snapshotItem(i);
    link.addEventListener("click", newWin, true);
}

Выражение XPath, используемое в коде, определяет все a элементы, которые 1) не имеют onclick атрибут, 2) чей href атрибут не установлен на "#", и 3) найдены внутри divs, чей class атрибут установлен на "content".

13
ответ дан 2 December 2019 в 02:59
поделиться

GM_setValue обычно только хранит 32-разрядные целые числа, строки и булевские переменные, но можно использовать в своих интересах uneval () метод (и более поздняя оценка () на извлечении), чтобы хранить любой объект. Если Вы имеете дело с чистыми значениями JSON (а не объекты JavaScript), используйте JSON.stringify для хранения и JSON.parse для получения; это будет и быстрее и более безопасным.

var foo={people:['Bob','George','Smith','Grognak the Destroyer'],pie:true};
GM_setValue('myVeryOwnFoo',uneval(foo));
var fooReborn=eval(GM_getValue('myVeryOwnFoo','new Object()'));
GM_log('People: '+fooReborn.people+'   Pie:'+fooReborn.pie);

Я склонен использовать "новый Объект ()" как мое значение по умолчанию в этом случае, но Вы могли также использовать" ({})". Просто помните, что "{}" оценивает как строка, не объект. Как обычно, оценка () с осторожностью.

5
ответ дан 2 December 2019 в 02:59
поделиться

Полезный метод XPath состоит в том, чтобы указать Ваше соответствие относительно узла, который Вы уже нашли. Как изобретенный пример для stackoverflow:

// first we got the username link at the top of the page
var hdrdiv = document.evaluate(
    "//div[@id='headerlinks']/a[1]", document, null,
    XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

// now we can retrieve text that follows it, (user's reputation score)
// (note that hdrdiv is now the contextNode argument, rather than document)
var reptext = document.evaluate(
    "following-sibling::span", hdrdiv, null,
    XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

alert("Reputation Score: " + reptext.textContent);

Можно соответствовать в любом направлении относительно contextNode, предков, потомков, предыдущих, после. Вот полезная ссылка XPath.

2
ответ дан 2 December 2019 в 02:59
поделиться

Скрипты GreaseMonkey, запущенные, когда DOM готов, таким образом, Вы не должны добавлять onload события, Вы только, начинают управлять DOM немедленно в Вашем сценарии GreaseMonkey.

2
ответ дан 2 December 2019 в 02:59
поделиться

Анонимная статистика

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

  1. Поместите gif файл (например, изображение логотипа) на Вашем собственном сайте.
  2. В Вашем сценарии присоедините img элемент к странице, которая ссылается на gif:
var img = document.createElement("img");
img.src = "http://mysite.com/logo.gif";
document.body.appendChild(img);

Теперь, каждый раз, когда пользователь выполняет Ваш сценарий, Ваша услуга хостинга зарегистрирует хит на этом gif файл.

Для отслеживания больше чем одного сценария используйте другой gif файл для каждого. Или добавьте некоторый параметр дифференциации к URL, (например: http://mysite.com/logo.gif?zippyver=1.0).

3
ответ дан 2 December 2019 в 02:59
поделиться

Значения заголовка сценария, (@name, @description, @version, и т.д.), может быть сделан восстановимым. Это предпочтительно для поддержания тех же постоянных величин в нескольких местах в Вашем сценарии.

Видеть метаданные Механика Доступа из своего сценария?

1
ответ дан 2 December 2019 в 02:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: