これに関連していくつか質問がありますが、unsafeWindow
を使用する一般的な「解決策」は私のために働いていません。@grant値が設定されているときに必要なライブラリを使用できません
私はStack Exchange Javascript SDKを使用しようとしています。
これは動作します:
// ==UserScript==
// @name testing
// @include http://stackoverflow.com/*
// @require https://api.stackexchange.com/js/2.0/all.js
// @version 1
// @grant none
// ==/UserScript==
console.log(SE);
SE.init({
clientId: 1234,
key: 'my key',
channelUrl: location.protocol + '//stackoverflow.com/blank',
complete: function (d) {
console.log(d);
console.log('SE init');
}
});
これはない:それはスクリプトがアクセス権を有することを意味するので、
// ==UserScript==
// @name testing
// @include http://stackoverflow.com/*
// @require https://api.stackexchange.com/js/2.0/all.js
// @version 1
// @grant GM_setValue
// ==/UserScript==
console.log(SE);
SE.init({
clientId: 1234,
key: 'my key',
channelUrl: location.protocol + '//stackoverflow.com/blank',
complete: function (d) {
console.log(d);
console.log('SE init');
}
});
をただし、両方のバージョンは、私が理解することはできませんconsole.log(SE)
ためObject { authenticate: n(), init: r() }
を記録SEオブジェクト。
「機能しない」とは、何もしないことを意味します。最初のconsole.log(SE)
の後にコンソールに何も記録されません。
このライブラリをどのように動作させるかわかりません。誰にもアイデアはありますか?これは、許可値が設定されているときにFirefoxで有効になっているサンドボックスに関連しています。
これはちょっとChromeで動作しますが、私の理解では2つのサンドボックスはかなり異なっています。 SE.init()
機能を実行できないFirefoxのサンドボックスを回避する方法はありますか?私はunsafeWindow.SE...
を試しましたが、うまくいきません - スクリプトは常にSEオブジェクトにアクセスできるので、違いはありません。それは実際にそれを呼び出すのに問題があるだけです!
あなたの関数をWebページのコンテキストにエクスポートする必要があります:[私のgreasemonkeyスクリプトからのイベントを聞く](http://stackoverflow.com/a/38357589) – wOxxOm
@wOxxOm hmm私は 'exportFunction(SE、unsafeWindow/ –
@wOxxOm内でその関数をエクスポートしても何もしません: 'complete:exportFunction(function(d){console.log(d) ; console.log( 'SE init');}、unsafeWindow) '。コードが実際にSE.initの開始をパスしないかのようです! –