为什么设置然后Dock / Undock打破这个Win 7桌面小工具?

时间:2011-10-14 00:44:41

标签: windows-desktop-gadgets

我已将其缩小到达到设置,然后取消或正常(还没有代码处理设置事件)然后尝试按停靠按钮可预测地杀死小工具控件。到目前为止,我已经在评论中尝试了所有建议,包括设置我感觉完全打破这个问题的课程。

真正困扰我的是,无论参与endTransition方法的参数是什么,或者end和beginTrans方法是否存在,它的行为方式都相同。转换绝对不需要5秒钟。之前设定为1。仍然没有区别。我可以找到关于这些transitionTypes的文档。

HTML文件:

<!doctype html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=Unicode" />
    <title>Time Tracker Gadget</title>
    <link type="text/css" rel="stylesheet" media="screen" href="css/main.css" />
</head>

<body id="gadget">

<!-- pure HTML here, no linked scripts, inline JS, or styles -->

<script type="text/jscript" src="js/main.js"></script>

</body>

</html>

JS档案:

System.Gadget.settingsUI = "settings.html";

var docked = {width:"161px", height:"110px"},
undocked = {width:"295px", height:"390px"},
gadgetEl = document.getElementById('gadget'),

addStyles = function(el,newStyles){
    var elStyle = el.style;
    for(var x in newStyles){ elStyle[x] = newStyles[x]; }
},

swapDockStates = function(){

    System.Gadget.beginTransition();

    if(System.Gadget.docked){
        addStyles(gadgetEl,undocked);
    }
    else {
        addStyles(gadgetEl,docked);
    }

    System.Gadget.endTransition(System.Gadget.TransitionType.morph, 5);

};

System.Gadget.onDock = swapDockStates;
System.Gadget.onUndock = swapDockStates;

XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<gadget>
  <name>BigTime Gadget</name>
  <version>1.0.0.0</version>
  <author name="BigTime Software">
    <info url="www.bigtime.net" />
  </author>
  <copyright>&#169; BigTime Software Inc.</copyright>
  <description>Time tracking gadget</description>
  <hosts>
    <host name="sidebar">
      <base type="HTML" apiVersion="1.0.0" src="bigtime.html" />
      <permissions>Full</permissions>
      <platform minPlatformVersion="1.0" />
    </host>
  </hosts>
</gadget>

2 个答案:

答案 0 :(得分:0)

呃......多么尴尬。不要将相同的JS文件与设置文件和小工具文件中的事件处理程序和设置位置相关联。这可以解释一些无论是存在还是被移除的事物的明显行为。我确实希望对全球范围内的情况有更深入的解释。

答案 1 :(得分:0)

你必须改变身体的高度以避免这个问题:

swapDockStates = function(){

    System.Gadget.beginTransition();

    if(System.Gadget.docked){
        document.body.style.height = '110px';
        addStyles(gadgetEl,undocked);
    }
    else {
        document.body.style.height = '390px';
        addStyles(gadgetEl,docked);
    }
    System.Gadget.endTransition(System.Gadget.TransitionType.morph, 5);
};