gpt4 book ai didi

windows-desktop-gadgets - Windows 小工具 : How do I modify the DOM?

转载 作者:行者123 更新时间:2023-12-02 04:17:17 24 4
gpt4 key购买 nike

我一直致力于创建 Windows 桌面小工具。我可以使用 document.createElement 创建我想要的 HTML 元素。我可以设置它们的属性,并且可以在设置它们之后获取这些属性,但是我为修改文档所做的任何事情都会完全静默地失败。我根本没有看到任何错误,但小工具并没有改变。甚至像 document.body.innerHTML = "asdf"; 这样简单的东西绝对什么都不做。 IE8 中的相同代码运行良好。我在这里想念什么?

小工具.xml:

<?xml version="2.0" encoding="utf-8" ?>
<gadget>
<name>Citrix Logon Controller</name>
<version>0.1</version>
<author name="Brian G. Shacklett">
<info url="http://digital-traffic.net" />
</author>
<copyright>&#169; Brian G. Shacklett</copyright>
<description>Controls Citrix Logons.</description>
<hosts>
<host name="sidebar">
<base type="HTML" apiVersion="1.0.0" src="gadget.html" />
<permissions>Full</permissions>
<platform minPlatformVersion="1.0" />
</host>
</hosts>
</gadget>

HTML:
<html>
<head>
<title>Citrix Manager</title>
<script type="text/javascript">
debugger;
</script>
<script src="scripts/debug.js" type="text/javascript"></script>
<script src="scripts/gadget.js" type="text/javascript"></script>
<script src="scripts/util.js" type="text/javascript"></script>
<link type="text/css" rel="stylesheet" href="styles/gadget.css" />
</head>

<body >
<div id="header"><h1>Citrix Manager</h1></div>
<div id="mainContent">
<a href="#" onClick="window.location.reload()">reload</a><br />
<a href="#" onClick="testFunction();">New Server</a>
</div>
</body>
</html>

小工具.js:
function testFunction()
{
document.body.innerHTML = "asdf";
}

最佳答案

您的代码看起来不错,我使用了 innerHTML和链接onclick s就好很多次了。我会检查两件事。

在您的 document.body.innerHTML = "asdf"; 正上方行,放window.prompt("",""); .这将允许您验证该函数是否被调用:

function testFunction() 
{
window.prompt("", "");
// window.prompt("", document.body.innerHTML); // before
document.body.innerHTML = "asdf";
// window.prompt("", document.body.innerHTML); // after
}

您还可以添加一些之前/之后的提示来为您提供 innerHTML 的值(请参阅注释代码)。

其次,我会检查您可能正在使用的任何转换。在 Vista System.Gadget.beginTransition()将锁定小工具的外观直到 System.Gadget.endTransition()叫做。如果这两个函数之间出现错误, endTransition()永远不会被调用,并且小工具将被锁定。
System.Gadget.beginTransition();
blah = blah.blah.blah.blah; // "blah" is null or not an object
System.Gadget.endTransition(System.Gadget.TransitionType.morph, 1.0);

在两者之间使用 try/catch 总是最安全的。除此之外,我不能说可能导致您的 DOM 问题的原因,但我的第一个建议( prompt)可能会让您了解问题所在。

更新

早该发现这一点。您需要取消默认操作,使用 return false; ,链接点击:
   <a href="#" onClick="testFunction(); return false;">New Server</a> 

运行 innerHTML 函数后,页面导航到“#”。我不认为这会是一个问题,因为 # 通常会将您带到页面 anchor 而不重新加载,但看起来这是这里问题的原因。全面测试。

关于windows-desktop-gadgets - Windows 小工具 : How do I modify the DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293166/

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