1.设置窗口关闭方法委托
System.Gadget.onSettingsClosing = settingsClosing;
function settingsClosing(event)
{
if(event.closeAction == event.Action.commit)
{
saveSettings();
}
else if (event.closeAction == event.Action.cancel)
{
}
event.cancel = false;
}
2.写入系统设置
this.rssFeedPath = System.Gadget.Settings.read("rssFeedPath");
3.读取系统设置
System.Gadget.Settings.write("rssFeedPath", _feedPath);
4.参数初始化
function clearViewElements()
{
positionNumbers.innerText = "";
for(i=0; i < 4; i++)
{
if ( g_viewElements !== null )
{
g_viewElements.FeedItems[i].innerHTML = "";
g_viewElements.FeedItems[i].href = "";
g_viewElements.FeedItems[i].innerText = "";
g_viewElements.FeedItems[i].setAttribute("name", "");
g_viewElements.FeedItems[i].setAttribute("localId", "");
}
eval("FeedItemName"+i).innerHTML = "";
eval("FeedItemName"+i).style.backgroundColor = "";
eval("FeedItemName"+i).innerText = "";
eval("FeedItemName"+i).setAttribute("title","");
eval("FeedItemDate"+i).innerHTML = "";
eval("FeedItemDate"+i).style.backgroundColor = "";
eval("FeedItemDate"+i).innerText = "";
eval("FeedItemDate"+i).setAttribute("title","");
eval("FeedItemLink"+i).style.textOverflow = "";
eval("FeedItemLink"+i).style.overflow = "";
eval("FeedItemLink"+i).style.whiteSpace = "";
eval("FeedItemLink"+i).style.width = "0px";
}
}
5.调试输出
System.Debug.outputString("Start Polling : Pull feeds queued up in bursts"); //DEBUG CODE
6.启动一个定时刷新
function startTimer()
{
if(g_timerFlag)
{
stopTimer();
g_timer = setInterval(setNextViewItems, g_timerMilliSecs);
}
}
setTimeout(loadData, 1000);
7.停止一个定时刷新
function stopTimer()
{
if(g_timerFlag)
{
clearInterval(g_timer);
}
}
8.指定设置页面文件
System.Gadget.settingsUI = "settings.html";
9.打开Flyout 窗口
System.Gadget.Flyout.show = true;
10.键盘按键捕获
<body οnkeydοwn="keyNavigate();" >
function keyNavigate()
{
switch(event.keyCode)
{
case 38:
case 104:
setPreviousViewItems();
break;
case 40:
case 98:
setNextViewItems();
break;
case 32:
case 13:
if(event.srcElement.id == "buttonLeftNarrator")
{
setPreviousViewItems();
}
else if(event.srcElement.id == "buttonRightNarrator")
{
setNextViewItems();
}
break;
case 27:
hideFlyout();
break;
}
}
11.鼠标滑轮
<body onmousewheel="mouseWheeNavigate();" >
function mouseWheeNavigate()
{
if( g_returnFeed == null )
return;
var headlineCount = g_returnFeed.feedItems.length;
if(g_totalViewableItems < headlineCount)
{
headlineCount = g_totalViewableItems;
}
if(event.wheelDelta < -20)
{
setNextViewItems();
}
if(event.wheelDelta > 20)
{
setPreviousViewItems();
}
}
12 获取Flyout 文件对象,并设置内容
var flyoutDiv = System.Gadget.Flyout.document;
flyoutDiv.getElementById("flyoutTitleLink").innerText = tempTitle;
flyoutDiv.getElementById("flyoutTitleLink").href = checkHref(g_feedURL);
flyoutDiv.getElementById("flyoutTitleLink").setAttribute("title", tempTitle);
flyoutDiv.getElementById("flyoutTitleLink").style.textOverflow = "ellipsis";
flyoutDiv.getElementById("flyoutTitleLink").style.overflow = "hidden";
flyoutDiv.getElementById("flyoutTitleLink").style.whiteSpace = "nowrap";
13.窗口 停靠
if(!System.Gadget.docked)
{
var backgroundToLoad = "url(images/item_hover_floating.png)";
}
14. Flyout 窗口 文件设置
System.Gadget.Flyout.file = "flyout.html";
15. 显示设置页面的方法
System.Gadget.onShowSettings = loadSettings;
16. Gadget 是否可见
System.Gadget.visibilityChanged = checkVisibility;
function checkVisibility()
{
isVisible = System.Gadget.visible;
if (!isVisible)
{
stopTimer();
}
if(isVisible)
{
startTimer();
}
}
17. 初始化配置集合
System.Gadget.settingsUI = "settings.htm"; // 设置Setting 页面
System.Gadget.onShowSettings = procSettingsShowEvent; // set settings onshow method
System.Gadget.onSettingsClosed = procSettingsClosedEvent; // set settings onclosed method
// init dock/undock event methods
System.Gadget.onUndock = procUndockEvent; // set gadget onundock method
System.Gadget.onDock = procDockEvent; // set gadget ondock method
// init flyout event methods
System.Gadget.Flyout.file = "flyout.htm"; // set flyout page
System.Gadget.Flyout.onShow = procFlyoutShowEvent; // set gadget flyout show event
System.Gadget.Flyout.onHide = procFlyoutHideEvent; // set gadget flyout hide event
18. 简化开发的最好方法,是下载现有的Gadget,修改其内容实用,下面是地址。
http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=zh-cn
http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=en
19. 如果Gadget中嵌入Flash
1.要将投影效果去掉
2. 添加透明属性
if(typeof infosoftglobal == "undefined") var infosoftglobal = new Object();
if(typeof infosoftglobal.FusionChartsUtil == "undefined") infosoftglobal.FusionChartsUtil = new Object();
var FusionCharts = infosoftglobal.FusionCharts;
this.addParam('Wmode', 'transparent');
FusionCharts.prototype = {
setAttribute: function(name, value){
this.attributes[name] = value;
},
getAttribute: function(name){
return this.attributes[name];
},
addParam: function(name, value){
this.params[name] = value;
},
getParams: function(){
return this.params;
}
}
var params = this.getParams();
for(var key in params) {
swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
}
3.使用一个透明背景的Png 图片最背景,达到背景透明的效果,并设置四边框为0,如下
<body οnlοad="Initialize();" style=" margin:0; width: 200px; height: 200px; background-repeat:no-repeat; background:url(bgbk5.png);">
function Initialize() {
try {
System.Gadget.settingsUI = "options.html";
} catch (e) { };
}
4.在重复加载一个Flash,数据源的时候,会有缓存的问题,简单的解决办法就是用时间拼装不重复的访问字符串,已达到每次访问都不一样的目的,避免缓存
function updateChart(DOMId) {
var strURL = "http://localhost:9999/Chart/Gallery/Data/Angular5.xml?time=a" + Date.prototype.Format("yyyyMMddhhmmss");
var myChart = new FusionCharts("http://localhost:9999/Chart/Charts/AngularGauge.swf", "myChartId", "200", "200", "0", "0");
myChart.setDataURL(strURL);
myChart.render("chartdiv");
}