Я пытаюсь написать простую команду 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 I пользуюсь?
Другим вариантом может быть создание нового элемента с использованием URL-адреса Wolfram в качестве источника и добавление его к previewBlock
- хотя я не уверен, как это сделать. Любые предложения будут оценены.
UPDATE
Вот скрипт 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;
}
);
}
})