Ich versuche, einen einfachen Ubiquity-Befehl zu schreiben, der eine Abfrage unter Wolfram Alpha ausführt und die Ergebnisse im Ubiquity-Vorschauobjekt anzeigt.jQuery + Ubiquity: Zurückgeben eines Dokumentobjekts aus einer URL
Ich muss die innerHTML
des Vorschauobjekts festlegen. Ich tue dies derzeit die HTML zu erhalten, die nur ein Anfang:
//...
jQuery.get('http://www.wolframalpha.com/input/?i=' + input.text,
null,
function(page) {
previewBlock.innerHTML = page;
}
);
Ich habe 2 Probleme/Fragen:
- Wolfram dauert 5-10 sec alle HTML auf der Seite zu generieren , so der
get()
Befehl gibt unvollständiges HTML zurück
Wie kann es warten, bis die Seite vollständig geladen wird? - Die Ergebnisse haben
id="results"
auf der Wolfram-Seite, würde Ich mag nur die Ergebnisse erhalten, indem so etwas wie dies zu tun:previewBlock.innerHTML = page.getElementById('results').innerHTML
Wie kann dies mit der URL erfolgt ich verwende?
Eine weitere Option könnte ein neues Element mit der Wolfram-URL als Quelle zu erstellen sein und hängen Sie ihn an previewBlock
- Ich bin nicht sicher, wie dass, obwohl zu tun. Irgendwelche Vorschläge würden geschätzt werden.
UPDATE
Hier ist die Allgegenwart Skript Ich verwende - Es wird die Bilder von der Quelle HTML und geben sie in einer Schleife holen. Hinweis: 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;
}
);
}
})
Zunächst, wie kommst du über den "eingeschränkten URI verweigert" Fehler? –
Ubiquity scheint sich darum zu kümmern und kann die Daten abrufen. –
Bitte geben Sie den Code ein, der den Allgegenwart enthält? –