以下の例をthe Bokeh Docsから考えてみましょう.TopToolを調整してサークルをクリックすると、新しいタブを開くのではなく同じタブのURLに移動しますタブ? docstringは、新しいタブを開くのが唯一の動作だと示唆していますが、おそらくCustomJSの回避策やこれを回避するためのいくつかのハックがありますか?OpenURL in bokeh - 同じタブで開く
from bokeh.models import ColumnDataSource, OpenURL, TapTool
from bokeh.plotting import figure, output_file, show
output_file("openurl.html")
p = figure(plot_width=400, plot_height=400,
tools="tap", title="Click the Dots")
source = ColumnDataSource(data=dict(
x=[1, 2, 3, 4, 5],
y=[2, 5, 8, 2, 7],
color=["navy", "orange", "olive", "firebrick", "gold"]
))
p.circle('x', 'y', color='color', size=20, source=source)
url = "http://www.colors.commutercreative.com/@color/"
taptool = p.select(type=TapTool)
taptool.callback = OpenURL(url=url)
show(p)
私は(this questionからの借入が、一種の無知、それを実装する方法を正確に)成功せず、いくつかのJavaScriptを包みます。これは、リンクなしの開口部につながる:
callback = CustomJS(args=dict(source=source), code="""
url = data['url']
window.open(url,"_self");
""")
taptool = p.select(type=TapTool)
taptool.callback = callback
私もOpenURLのためtag
キーワードを使用して<a>
タグのようなリンクを処理しようとしました。このtag
の用語を正しく使用する方法については何も見つかりませんでしたので、これは盲目的な試みです。ここでは運がない。
url = "http://www.colors.commutercreative.com/@color/"
taptool = p.select(type=TapTool)
taptool.callback = OpenURL(url=url, tags=["_self"])
私はBokehがまだかなり新しくなっていると理解しています。この機能はまだ利用できません。私はまだ十分なjavascriptを知っていれば回避策があると思う(明らかにそうではない)。
ありがとうございました。寄付を始めたいと思いますので、リンクに感謝します。何らかの理由であなたの完全な例は私がドットをクリックするとどこにでも私を送りません。また、 'window.open()'コマンドに "_self"引数が必要ですか? – benten
ああ、はい、申し訳ありませんが、JSコンソールの出力を見ていて、それが難しくなってしまったので、削除しました。私は答えに戻します。 – bigreddot
もう一度ありがとうございます。私はこれ以後、あなたにあまりバグしないことを望みます。外部の代わりにループ内に 'window.open()'がある理由はありますか?関係のない質問は、私がBokehの最新バージョンを持っている限り、私に "core/util/selection"があるかどうかです。固定URLスニペットは正常に機能します。完全な例の 'selection = require()'行だけを追加すると、何も動作しません。エラーが発生しないため、診断が難しい種類です。 – benten