首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery + Ubiquity:从URL返回文档对象

jQuery + Ubiquity:从URL返回文档对象
EN

Stack Overflow用户
提问于 2009-05-22 14:39:52
回答 2查看 1.1K关注 0票数 2

我正在尝试编写一个简单的泛性命令,它将在沃尔夫拉姆阿尔法上运行一个查询,并将结果显示在Ubiquity预览对象中。

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

代码语言:javascript
运行
复制
//...
jQuery.get( 'http://www.wolframalpha.com/input/?i=' + input.text, 
    null, 
    function( page ) {
        previewBlock.innerHTML = page;
    }
);

我有两个问题:

  1. Wolfram需要5-10秒才能生成页面上的所有HTML,因此get()命令返回不完整的HTML。 如何能够等待页面完全加载?
  2. 结果在Wolfram页面上有id="results",我只想通过这样的操作获得结果: previewBlock.innerHTML = page.getElementById('results').innerHTML 如何使用我正在使用的URL来完成此操作?

另一种选择可能是使用Wolfram作为源创建一个新元素,并将其附加到previewBlock中--我不知道如何做到这一点。如有任何建议,将不胜感激。

更新

下面是我正在使用的Ubiquity脚本--它将从源HTML中获取图像并在一个循环中输出它们。注意:CmdUtils.previewGet(pblock, opt)调用jQuery.get(opt)

代码语言:javascript
运行
复制
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;
      }
    );
  }
})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-22 22:39:07

我认为使用普及预览版是不可能的。问题是,当将请求发送到Wolfram时,页面完成加载非常快,但是它继续异步地获取其他信息,正如您已经知道的那样。

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

这里是一个屏幕截图运行您的命令和传递文本“美国国内生产总值”。两个div获得显示信息,两个div在页面加载完成后就开始异步获取附加数据。

alt文本http://exterbase.com/wolfram-result.png

票数 2
EN

Stack Overflow用户

发布于 2009-05-25 14:01:21

我认为您的想法是可行的,但我认为您在对Wolfram\Alpha API进行AJAX调用时会获得更大的成功,而不是试图解析对W-A web前端的响应。有关WolframAlpha API的文档,请参见: www.wolframalpha.com/WolframAlphaAPI.pdf

我认为改变您的方法与API交互应该可以解决您的问题。如果您想继续使用当前的方法,您可能需要检查内置Wikipedia命令的代码,以了解它们如何解析搜索结果,然后异步检索预览的文章摘要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/898203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档