Wolfram Alphaでクエリを実行し、結果をUbiquityプレビューオブジェクトに表示する単純なUbiquityコマンドを作成しようとしています。
innerHTML
プレビューオブジェクトのを設定する必要があります。私は現在、HTMLを取得するためにこれを行っていますが、これはほんの始まりにすぎません。
//...
jQuery.get( 'http://www.wolframalpha.com/input/?i=' + input.text,
null,
function( page ) {
previewBlock.innerHTML = page;
}
);
私には2つの問題/質問があります:
- Wolframはページ上のすべてのHTMLを生成するのに5〜10秒かかるため、
get()
コマンドは不完全なHTMLを返します
。ページが完全に読み込まれるのをどのように待つことができますか? - 結果は
id="results"
Wolframページにあります。次のようにして結果を取得したいと思いpreviewBlock.innerHTML = page.getElementById('results').innerHTML
ます。使用しているURLでこれを行うにはどうすればよいですか。
もう1つのオプションは、Wolfram URLをソースとして使用して新しい要素を作成し、それをに追加するpreviewBlock
ことです。ただし、その方法はわかりません。任意の提案をいただければ幸いです。
更新
これが私が使用しているユビキタススクリプトです-ソースHTMLから画像をフェッチし、ループで出力します。注:CmdUtils.previewGet(pblock, opt)
呼び出しjQuery.get(opt)
CmdUtils.CreateCommand({
name: "wolfram",
takes: {"input": noun_arb_text},
icon: "http://www.wolframalpha.com/favicon.ico",
homepage: "http://www.wolframalpha.com",
author: {name:"Jason Coon"},
description: "Searches Wolfram Alpha and loads results in to Preview pane.",
preview: function(pblock, input) {
CmdUtils.previewGet(pblock,
'http://www.wolframalpha.com/input/?i=' + input.text,
null,
function(data){
var resultStart = data.indexOf("results",0);
var beginPos = data.indexOf("<img src", resultStart);
var endPos = 0;
var html = ""
while(beginPos != -1){
endPos = data.indexOf(">", beginPos);
html = html + "<br><br>" + data.substring(beginPos, endPos);
beginPos = data.indexOf("<img src", endPos);
}
pblock.innerHTML = html;
}
);
}
})