Javascript - Node.js要求('ttapi')无法使用bookmarklet

时间:2011-11-27 02:29:32

标签: javascript node.js bookmarklet

我正在尝试使用alaingilbert的API(https://github.com/alaingilbert/Turntable-API)为turntable.fm编写一个bot,它使用node.js.我之前从未写过一行javascript,所以我不确定我在这里弄错了什么。

这是我的代码:

var container = document.body;

if(document.getElementById("ttapi")) {
    container.removeChild(document.getElementById("ttapi"));
}
var obj = document.createElement("div");
obj.id = "ttapi";
obj.style.position = "absolute";
obj.style.top = "20px";
obj.style.left = "20px";
obj.style.width = "500px";
obj.style.height = "100px";
obj.style.padding = "10px";
obj.style.backgroundColor = "#fff";
obj.style.fontSize = "13px";
var auth = document.createElement("div");
    auth.innerHTML = "Auth: "+turntable.user.auth;
var userid = document.createElement("div");
    userid.innerHTML = "UserId: "+turntable.user.id;
for (var i in turntable) { if (turntable[i].roomId) { var rid = turntable[i].roomId; break; } }
var roomid = document.createElement("div");
    roomid.innerHTML = "RoomId: "+rid;
var testLine = document.createElement("div");
    testLine.innerHTML = " IM STILL WORKING";

var Bot= require('ttapi');
var AUTH = turntable.user.auth;
var USERID = turntable.user.id;
var ROOMID = rid;   

obj.appendChild(auth);
obj.appendChild(userid);
obj.appendChild(roomid);
obj.appendChild(testLine);
container.appendChild(obj);

我在转盘上从书签中运行脚本。我不确定如何从javascript获得好的调试消息,所以我通过每行代码移动container.appendChild(obj)进行调试。它在脚本停止工作时停止显示

1 个答案:

答案 0 :(得分:2)

听起来就像你试图在浏览器中运行node.js代码一样。如果这是正确的,那么它将无法工作,因为require是特定于节点的函数。 Node.js不在浏览器中运行;它是javascript的替代运行时,像turntable.fm这样的东西在浏览器上运行而不是

如果你想使用书签来写东西,你只能使用浏览器提供的内容 - 也就是说,当你去turntable.fm时可以访问的内容,打开javascript控制台并开始输入这通常由windowdocument以及turntable.fm正在使用的任何库组成。例如,如果他们使用的是jquery,您可以使用$访问它。

编辑:此外,如果您使用的是Firefox,请查找“firebug”扩展程序。如果你很幸运(或使用chrome),你的浏览器(或像firebug这样的扩展程序)将为你提供console.log,这对于调试很有用。

哦,这是手册:https://developer.mozilla.org/en-US/docs你想读它。