好的,我不是Sidebar Gadgets的专家,但我有这个项目,我将不得不为学校做。我试图自己解决它,但我真的陷入困境。
我将不得不使用Cirip API(Cirip.ro是一种Twitter),并且为了使用API,我必须输入用户名。我通过“设置”执行此操作,但在关闭设置时没有任何效果。
这是代码,但它非常混乱。我不是网络程序员,所以javascript / html对我来说是新的。
http://www.box.net/shared/7yogevhzrr
编辑:好的,所以我把它缩小了一点并在这里优化了我的代码,但它仍然无效。我已尽可能简单。
在主html中我有这个:
<script language="javascript">
document.write(getUserName());
</script>
在gadget.js中:
var userName;
document.onreadystatechange = function DoInit() {
document.body.style.width = 251;
document.body.style.height= 351;
document.body.style.margin=2;
userName="danieliuhasz";
System.Gadget.settingsUI = "settings.html";
System.Gadget.onSettingsClosing = settingsClosed;
}
function setUserName(userNameSet){
userName = userNameSet;
}
function getUserName(){
return userName;
}
function settingsClosed()
{
var username = System.Gadget.Settings.read("username");
setUserName(username);
}
在settings.html中:
<body>
Username:<br />
<input name="userBox" type="text" maxlength="50" />
</body>
在settings.js中:
document.onreadystatechange = function DoInit()
{
if(document.readyState=="complete")
{
var user = System.Gadget.Settings.read("userName");
if(user != "")
{
userBox.value = user;
}
}
}
System.Gadget.onSettingsClosing = function(event)
{
if (event.closeAction == event.Action.commit)
{
var username = userBox.value;
if(username != "")
{
System.Gadget.Settings.write("username", username);
System.Gadget.document.parentWindow.settingsClosed();
}
}
}
我真的无法理解。这个输出是“未定义的”。
答案 0 :(得分:2)
我在这台机器上没有RAR解包器,所以我无法查看该文件,但我可以给你一些关于保存设置的建议。如果您需要进一步的帮助,请尝试将代码粘贴到您的问题中(请参阅上面的评论)。
使用设置时,您需要在JavaScript代码中捕获System.Gadget.onSettingsClosing
事件。在此事件处理程序中,您可以通过在小工具窗口中设置属性来临时设置,也可以使用System.Gadget.Settings.write
存储设置,使其成为半永久性设置。假设您的用户名/密码html如下所示:
<label for="username">Username: </label><input id="username" type="text"><br/>
<label for="password">Password: </label><input id="password" type="password">
您的JavaScript应如下所示:
System.Gadget.onSettingsClosing = function (event) {
// First, we need to make sure the user clicked the OK button to save
if (event.closeAction == event.Action.commit) {
// If they did, we need to store the settings
var username = document.getElementById("username").value,
password = document.getElementById("password").value;
System.Gadget.Settings.write("username", username);
System.Gadget.Settings.write("password", password);
/* Finally, we can call a function defined in the main gadget window's
JavaScript to let it know that the settings have changed */
System.Gadget.document.parentWindow.settingsHaveChanged();
}
}
在主要小工具的JavaScript中,settingsHaveChanged
可能类似于以下函数:
function settingsHaveChanged () {
var username = System.Gadget.Settings.read("username"),
password = System.Gadget.Settings.read("password");
sendAPIRequest(username, password);
}