我正在尝试查看是否可以在DuckDuckGo主网站的上下文之外使用来自DuckDuckHack Instant Answers 的代码。毕竟,Instant Answer 主要是一个独立的组件,由一些 HTML、CSS 和 Javascript 组成,应该是相对独立且可重用的。
由于 DuckDuckHack 项目处于维护模式,获取信息似乎有点困难:开发者指南中提到的 Slack 和 Forum已被禁用。我试图找出其他人是否试图让 Instant Answers 在其他情况下工作,但我找不到任何东西。有关于编写即时答案的教程,例如使用Perl 和 DuckPAN 工具的教程。我试图让现有的即时答案使用这些工具来工作,但我未能让它正常工作(不确定它们是否仍在维护)。
由于这些工具似乎有点重量级,我认为可以完全绕过它们并尝试直接使用 Instant Answer 中的 HTML、CSS 和 JS。
我已经给了计算器第一枪。我在duckduckgo/zeroclickinfo-goodies存储库的目录share/ goodie/calculator中确定了相关的源代码。HTML 似乎在content.handlebars,然后是calculator.css和calculator.js。我创建了一个纯 HTML 文件,将 HTML 从content.handlebars那里放入并包含对 CSS 文件和 JS 文件的引用。起初,CSS 不起作用,因为如果不添加更多包装器 div,CSS 规则将不适用,当检查 DuckDuckGo 站点时可以很容易地找到这些包装器 div,并且计算器 Instant Answer 可见。添加这些包装器 div 后,计算器 UI看起来或多或少完好无损. 但是,UI 的按钮根本不起作用。
查看 Javascript 控制台,我收到此错误:
Uncaught ReferenceError: DDH is not defined
at calculator.js:1
显然calculator.jsDDH需要一个对象,但是我不知道该对象应该是什么以及如何创建它。
有谁知道这个DDH变量通常是如何初始化的,或者更一般地说是如何使它工作的?任何对从 DuckDuckHack 为自己的站点重用代码的项目的引用也将受到高度赞赏。