1

Firefox 16で正常に動作するjQueryを使用した古いユーザースクリプトがありますが、Firefox17リリースでは動作しなくなりました。

そのため、18にアップグレードしようとした今日まで、バージョン16.0.2を使用していましたが、同じ問題が解決しません。まず、それがGreasemonkeyである可能性があると考え、1.6バージョンとScriptishアドオンを試しましたが成功しませんでした。だから私はjQueryのバージョンを更新しようとしましたが、解決策はありませんでした。これは1つのスクリプトではなく、すべてのjQueryコードが含まれています。また、コンソールでのエラーは報告されません。

誰が何が起こっているのか知っていますか?

Firebugコンソールによって報告されたいくつかのエラー:

o.attachEvent("on"+e, h);

から:

window.addListener=function(o, e, h){
try{
o.attachEvent("on"+e, h);
}catch(a){
o.addEventListener(e, h, false);
}
} 

別のスクリプトの別のエラー

GM_addStyle ( (<><![CDATA[

から:

GM_addStyle ( (<><![CDATA[
    #dtl {
        position:           absolute;
        top:                0;
        right:              0;      
    }
    #dtl iframe {
        width:              950;
        height:             680;
        border:             none;
    }

]]></>).toString () );
4

1 に答える 1

2

jQueryとGreasemonkeyはFirefox17と18で正常に動作します(サンドボックスをアクティブにしておく限り)。それは問題ではありません。

多くのGreasemonkeyスクリプトに影響を与えたFF17で変更された唯一の主要な点は、FirefoxがE4Xのサポートを終了したことです。

E4Xを使用CDATAすると、次のように、堅牢な複数行の文字列を作成するのに非常に効果的です。

GM_addStyle ( (<><![CDATA[
    #someNodeID {
        position:           fixed;
        top:                0;
        right:              0;
    }
]]></>).toString () );


ただし、E4XがサポートされなくなったためCDATA、使用したコードのすべてのビットを、次のようにjavascript文字列escape(\)を使用するようにリファクタリングする必要があります。

GM_addStyle ( '                         \
    #someNodeID {                       \
        position:           fixed;      \
        top:                0;          \
        right:              0;          \
    }                                   \
' );


'そのエスケープを使用するときは、どのように混合し"て引用 するかに特に注意を払う必要があります。

于 2013-01-10T22:20:37.213 に答える