javascript - jQuery + 无处不在 : Return a document object from a URL

标签 javascript jquery ubiquity

我正在尝试写一个简单的 Ubiquity将在 Wolfram Alpha 上运行查询的命令,并在 Ubiquity 预览对象中显示结果。

我需要设置预览对象的innerHTML。我目前正在这样做是为了获取 HTML,这只是一个开始:

//...
jQuery.get( 'http://www.wolframalpha.com/input/?i=' + input.text, 
    null, 
    function( page ) {
        previewBlock.innerHTML = page;
    }
);

我有 2 个问题/疑问:

  1. Wolfram 需要 5-10 秒才能生成页面上的所有 HTML,因此 get() 命令返回不完整的 HTML
    它如何等待页面加载完全吗?

  2. 结果在 Wolfram 页面上有 id="results",我想通过执行以下操作来获取结果:
    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;
      }
    );
  }
})

最佳答案

我认为使用Ubiquity Preview 甚至不可能实现这一点。问题是,当向 Wolfram 发送请求时,页面很快完成加载,但正如您所知,它会继续异步获取其他信息。

如果这是通过浏览器窗口而不是 Ubiquity 预览完成的,您实际上可以将页面加载到隐藏的 iframe 中,并在更新结果 div 之前检查内容。但是,此选项在当前版本的 Ubiquity 中不可用。

这是运行命令并传递文本“USA GDP”的屏幕截图。页面加载完成后,两个 div 获取显示信息,另外 2 个 div 开始异步获取其他数据。
alt text http://exterbase.com/wolfram-result.png

关于javascript - jQuery + 无处不在 : Return a document object from a URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898203/

相关文章:

addPersistentStoreWithType 的 iOS 核心数据 + iCloud 错误 : You don’t have permission to save the file “store” in the folder

javascript - 在 javascript 的协作线程意义上是否有正确的 'yield' 方法?

javascript - MobX - 从计算值中过滤 asMap?

javascript - 在 javascript 中引用加载的 <img>

javascript - 使用 Javascript 将单元格附加到集合

javascript - jQuery - 设置 var - 多个 Ul - 为每个 ul 定位相同的 li child

javascript - Jquery prop required 错误

javascript - C# 的 JS 正则表达式 "lambda syntax"

javascript - 在释放 zalgo 的 Node.js 设计模式中,为什么异步路径是一致的?