22

プロジェクトの一環として、IPython モジュール内にいくつかの JavaScript を埋め込む必要があります。これは私がやりたいことです:

from IPython.display import display,Javascript
Javascript('echo("sdfds");',lib='/home/student/Gl.js')

私のGl.jsは次のようになります

function echo(a){
alert(a);
}

「Gl.js」やその他の外部スクリプトをノートブックに埋め込む方法はありますか?そのライブラリに必要な Javascript コードを実行しようとするたびに「lib」引数としてそれらを含める必要はありません。

4

7 に答える 7

17

非常に短期的な解決策として、IPythondisplay()HTML()関数を利用して JavaScript をページに挿入することができます。

from IPython.display import display, HTML
js = "<script>alert('Hello World!');</script>"
display(HTML(js))

公式の方法よりもこれをお勧めしませんがcustom.js、何かをすばやくテストしたり、小さな JavaScript スニペットを動的に生成したりするのに役立つ場合があります。

于 2015-07-31T16:31:31.337 に答える
4

私はこの問題と数日間戦ってきました。これはうまくいくように見えます。バイヤーは注意してください、これは最小限の実用的なソリューションであり、きれいでも最適でもありません-より良いソリューションは大歓迎です!

まず、 で.ipython/<profile>/static/custom/myScript.js、require.js マジックを実行します。

define(function(){

    var foo = function(){
            console.log('bar');
        }

    return {
        foo : foo
    }
});

このパターンを必要な数の関数にコピーします。次に、 で.ipython/<profile>/static/custom/custom.js、それらを永続的なものにドラッグします。

$([IPython.events]).on('notebook_loaded.Notebook', function(){

    require(['custom/myScript'], function(custom){
        window.foo = custom.foo;
    } );

});

はい、私はあなたが適切だと思うように、ウィンドウオブジェクト、名前空間に何かを投げる恐ろしい人です。しかし、今ノートブックでは、次のようなセル

%%javascript

foo();

ユーザーが JS を明示的にインポートしなくても、本来あるべき姿を正確に実行する必要があります。このためのより簡単な解決策を見たいと思っています (plz 開発者は、多数のグローバル JS 関数をロードするため$.getScript('/static/custom/util.js');custom.js必要な場合があります) - しかし、これは私が今のところ持っている最高のものです. この歌と踊りは別として、IPython ノートブック チームにとって非常に大きなものです。これは素晴らしいプラットフォームです。

于 2014-02-06T22:03:29.533 に答える
4

少なくとも今のところ、パッケージをインストールすることによってすぐに使用できるわけではありません。その方法はcustom.js、jQuerygetScriptを使用して js をノートブックに挿入することです。

これは時々変更される開発機能であるため、私はそれを行う方法について明確に曖昧にしています。

知っておくべきことはstatic、ユーザー プロファイルのフォルダーにはmergedWeb サーバーの静的アセットがあり、正しい URL を要求することで、このフォルダー内の任意のファイルにアクセスできることです。

また、この質問は、数時間前に IPython の毎週のビデオ「ラボ ミーティング」で生放送され、YouTube で公開されました (回答が長くなる場合があります)。ここで質問の作成者とのディスカッションを開始しました。

于 2013-05-31T09:02:52.690 に答える