gpt4 book ai didi

javascript - 如何从用户脚本中使用 Freebase 的建议脚本?

转载 作者:行者123 更新时间:2023-11-28 10:03:40 25 4
gpt4 key购买 nike

我想编写一个(脚本式)用户脚本来包含其他内容 the Freebase suggestion search widget在各种网站上。我尝试了多种方法来使其发挥作用,但到目前为止还没有成功。

我的用户脚本看起来像(注意包含通配符):

// ==UserScript==
// @id meta@parsed.nl
// @name Meta
// @version 1.0
// @namespace
// @author
// @description
// @include *
// @run-at document-end
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js
// @require http://freebaselibs.com/static/suggest/1.3/suggest.min.js
// @noframes
// ==/UserScript==

$("head").append('<link type="text/css" rel="stylesheet" href="http://freebaselibs.com/static/suggest/1.3/suggest.min.css" />');
$("body").prepend('<input id="freebase-suggest" type="text"/>');

$("#freebase-suggest")
.suggest()
.bind("fb-select", function(e, data) {
alert("");
});

一切加载正常,但当我尝试使用搜索框时,它不起作用,并且错误控制台中显示以下错误:

Error: jQuery16101843227533633628_1325186688691 is not defined Source File: http://www.freebase.com/private/suggest?callback=jQuery16101843227533633628_1325186688691&prefix=ron+paul&type_strict=any&all_types=false Line: 1

显然,该脚本正在使用 JSONP 进行跨域请求,我的直觉告诉我回调 jQuery16101843227533633628_1325186688691 是在与小部件所在文档不同的上下文中定义的(Scriptish 上下文与 unsafeWindow )。

我应该做什么?

最佳答案

在 DOM 中添加 jQuery 和 Freebase 建议脚本并等待它们加载就足以完成这项工作。但您必须引用 unsafeWindow

var head = document.getElementsByTagName('head')[0];

// Only add jQuery if the site doesn't have it already (to prevent conflicts)
if (typeof unsafeWindow.jQuery === "undefined") {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js';
head.appendChild(script);
}

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://freebaselibs.com/static/suggest/1.3/suggest.min.js';
head.appendChild(script);

window.setTimeout(function() {
$ = unsafeWindow.jQuery;

$("head").append('<link type="text/css" rel="stylesheet" href="http://freebaselibs.com/static/suggest/1.3/suggest.min.css" />');
$("body").prepend('<input id="freebase-suggest" type="text"/>');

$("#freebase-suggest")
.suggest()
.bind("fb-select", function(e, data) {
alert("");
});

}, 1000);

我不知道这种方法是否聪明,但它确实有效。

关于javascript - 如何从用户脚本中使用 Freebase 的建议脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com