我正在尝试编写一个简单的Ubiquity命令,该命令将在Wolfram Alpha上运行查询,并在 Ubiquity 预览对象中显示结果。
我需要设置innerHTML
预览对象的。我目前正在这样做以获取 HTML,这只是一个开始:
//...
jQuery.get( 'http://www.wolframalpha.com/input/?i=' + input.text,
null,
function( page ) {
previewBlock.innerHTML = page;
}
);
我有 2 个问题/问题:
- Wolfram 需要 5-10 秒来生成页面上的所有 HTML,因此该
get()
命令返回不完整的 HTML
如何等待页面完全加载? - 结果
id="results"
在 Wolfram 页面上,我想通过执行以下操作来获得结果:previewBlock.innerHTML = page.getElementById('results').innerHTML
如何使用我正在使用的 URL 来完成?
另一种选择可能是使用 Wolfram URL 作为源创建一个新元素并将其附加到previewBlock
-- 我不知道该怎么做。任何建议,将不胜感激。
更新
这是我正在使用的 Ubiquity 脚本——它将从源 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;
}
);
}
})