J'essaye d'écrire une simple commande Ubiquity qui lancera une requête sur Wolfram Alpha, et affichera les résultats dans l'objet d'aperçu Ubiquity.jQuery + Ubiquity: Retourne un objet document à partir d'une URL
Je dois définir innerHTML
de l'objet d'aperçu. Je suis actuellement ce pour obtenir le code HTML, qui est seulement un début:
//...
jQuery.get('http://www.wolframalpha.com/input/?i=' + input.text,
null,
function(page) {
previewBlock.innerHTML = page;
}
);
J'ai 2 problèmes/questions:
- Wolfram prend 5-10 secondes pour générer tout le code HTML de la page , donc la commande
get()
renvoie HTML incomplet
Comment peut-il attendre le chargement complet de la page? - Les résultats ont
id="results"
sur la page Wolfram, je voudrais simplement obtenir les résultats en faisant quelque chose comme ceci:previewBlock.innerHTML = page.getElementById('results').innerHTML
Comment cela peut-il être fait avec l'URL que je utilise?
Une autre option pourrait être de créer un nouvel élément en utilisant l'URL Wolfram en tant que source et l'ajouter à previewBlock
- Je ne sais pas comment faire bien. Toute suggestion serait appréciée.
MISE À JOUR
Voici le script Ubiquity j'utilise - Il va chercher les images à partir du code source HTML et les sorties dans une boucle. Note: CmdUtils.previewGet(pblock, opt)
appelle 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;
}
);
}
})
Tout d'abord, comment passez-vous l'erreur "URI restreinte refusée"? –
Ubiquity semble prendre soin de lui, et est capable d'aller chercher les données. –
Veuillez poster le code qui inclut l'appel d'ubiquité? –