(轻便)调试JavaScript的旺旺插件(基于jzshmyt的javascript-logger)

Demo如下,大家拍砖吧!


请看下面介绍:

[img]/upload/attachment/51934/7512eaac-a4f1-328c-a8b2-e9a65b3b3377.png[/img]

[img]/upload/attachment/51936/288e2b1a-2eac-3c8d-bdfd-fe7e36d4aafd.png[/img]

[img]/upload/attachment/51938/89614e85-21f9-355e-b848-ce377def0629.png[/img]

程序代码:

下面代码负责实现和旺旺IM通讯的接口,这里只响应了onClick事件。
using System.Linq;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;
using wwsdkcomLib;
using System.Xml;

namespace JSHelper
{
public class Global
{
public static int lPluginCookie;
public static int lCookie;
public static object pSlot;
public static string appid = "18265";
}
[ComVisible(true),
Guid("B221A17A-D3E7-44df-AD67-D45CFA4B5229"),
ClassInterface(ClassInterfaceType.None)]
public class Class1 : ISDKPlugin2
{
public void OnConnect(object pApplication, int lPluginCookie)
{
// OnConnect 不建议使用末态对话框
//ISDKPluginQueryResult pqr = (pApplication as ISDKApplication3).GetSubScriptionInfo(lPluginCookie) as ISDKPluginQueryResult;
//Global.appid = pqr.appID;
}

public void OnDisconnect(object pApplication, int lPluginCookie)
{
// OnDisConnect 不建议使用末态对话框
// MessageBox.Show("我被卸载了", "csharp helloworld");
}


public void OnNotify(SDKMessageID MsgID, object pParam)
{

if (MsgID == SDKMessageID.NOTIFY_OFFLINE)
{
}

else if (MsgID == SDKMessageID.NOTIFY_USERLOGIN)
{
}
}

public void OnUninstall()
{
}

public void Require()
{
}
}
[ComVisible(true),
Guid("950BFC6C-502A-4239-A36E-90893BA3B03E"),
ClassInterface(ClassInterfaceType.None)]

public class Class2 : ISDKPluginItem {

Form1 f1;

public void OnMenuClick(int lCmdID)
{
}

// 插件作为按钮出现时候得到点击后被调用
// 本例中此方法将在点击发生后得到调用

public void OnClick()
{
try
{
this.f1.Show();
}
catch(Exception ex)
{
this.f1 = new Form1();
this.f1.Show();
}
}

// 插件接入到插槽后得到通知

public void OnCreate(object pSlot, int hParentWnd, int lCookie)
{

}

// 插件在附属插槽被销毁时候得到通知

public void OnDestroy()
{
// 使用模态对话框可能导致异常
// MessageBox.Show("聊天对话框输入工具条插件被销毁", "csharp allinone plugin");
}

// 和插件项本身相关的消息通知

public void OnNotify(SDKItemNotifyID MsgIDD, object pParam)
{

}

// 当插件以窗口形式出现情况下,在父窗口发生变化情况下得到通知

public void OnSize(int cx, int cy)
{
}

}

}


下面代码是JSHelper窗体主程序,没什么意思。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace JSHelper
{
public partial class Form1 : Form
{
String path;
Form2 f2;
Form2 f3;
Form2 f4;
Form2 f5;
Form2 f6;

public Form1()
{
InitializeComponent();
this.path = Application.StartupPath;
this.webBrowser1.Url = new System.Uri(this.path + "\\plugins\\" + Global.appid + "\\src\\debugger.html", false);
}

private void ExamplesToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("explorer", this.path + "\\plugins\\" + Global.appid + "\\src\\example\\");//+this.path
}
catch(Exception ex)
{
MessageBox.Show("请打开插件中的example目录.\n\n该目录的路径可能如下:\n" + this.path + "\\plugins\\" + Global.appid + "\\src\\example\\");
}
}

private void HideToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
}

private void ManualToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
this.f2.Show();
}
catch
{
this.f2 = new Form2("使用说明", new System.Uri(this.path + "\\plugins\\" + Global.appid + "\\src\\readme\\KingfishersManual.html"));
this.f2.Show();
}
}

private void AboutJSHelperToolStripMenuItem_Click(object sender, EventArgs e)
{
String[] info=new String[7];
info[0] = "Version:0.9.0";
info[1] = "Release Date:2008-11-17";
info[2] = "JSHelper是一款轻巧的Javascript调试工具,";
info[3] = "以旺旺插件形式发布在阿里软件平台,";
info[4] = "依赖于jzshmyt所写Kingfishers工具包。";
info[5] = "方便使用是我的唯一目的。";
info[6] = "Author : CharlesCui";

try
{
this.f3.Show();
}
catch
{
this.f3 = new Form2("关于--JSHelper", String.Join("<p/><p/>", info, 0, info.Length));
this.f3.Show();
}
}

private void JavascriptlogToolStripMenuItem_Click(object sender, EventArgs e)
{
String[] info = new String[5];
info[0] = "Kingfishers是一个用javascript语言编写的,能够代替alert,在浏览器中连续输出客户端javascript脚本运行日志的工具。";
info[1] = "主要用于客户端脚本的分析和查错。";
info[2] = "GoogleCode:http://code.google.com/p/dewind/";
info[3] = "Download:http://dewind.googlecode.com/files/Kingfishers-1.0.rar";
info[4] = "Author : jzshmyt";

try
{
this.f4.Show();
}
catch
{
this.f4 = new Form2("关于--Kingfishers", String.Join("<p/><p/>", info, 0, info.Length));
this.f4.Show();
}
}

private void AboutAuthorToolStripMenuItem_Click(object sender, EventArgs e)
{
String[] info = new String[4];
info[0] = "作者博客:<a href='http://charlescui.iteye.com'>http://charlescui.iteye.com</a>";
info[1] = "作者邮箱:<a href='mailto:zheng.cuizh@gmail.com?cc=zheng.cuizh@alibaba-inc.com'>zheng.cuizh@gmail.com</a>";
info[2] = "作者寄语:欢迎广大爱好插件开发(阿里旺旺\\Android)、系统性能调优的朋友们骚扰我!";
info[3] = "作者MSN:cuizheng.hz@hotmail.com";

try
{
this.f5.Show();
}
catch
{
this.f5 = new Form2("关于--作者", String.Join("<p/><p/>", info, 0, info.Length));
this.f5.Show();
}
}

private void ParamsToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
this.f6.Show();
}
catch
{
this.f6 = new Form2("参数说明", new System.Uri(this.path + "\\plugins\\" + Global.appid + "\\src\\readme\\KingfishersManual.txt"));
this.f6.Show();
}
}
}
}


下面代码是JSHelper实现页面的html:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<html>

<head>
<script type="text/javascript" src="logger.js" suspended=false simplemode=true skin = true cookie=false></script>
<script>
string_to_code=function(id){
content=document.getElementById("Content").value;
return content.split('\n').join(';\n');
}
</script>
</head>
<body>
<table>
<tr><td>
<textarea rows="9" cols="40" id="Content">
//(JSCode)
</textarea>
</tr></td><tr><td>
<input type=button value="Run" onclick='eval(string_to_code("Content"))' id=button1 name=button1/>
<input type=button value="Clear" onclick='(document.getElementById("Content").value="")' id=button2 name=button2/>
<input type=button value="Reset" onclick='(location.reload())' id=button3 name=button3/>
<p/>
</tr></td>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值