复制代码 代码如下:

复制代码 代码如下:

    作者:donna donna.zdn@gmail.com 自由转发 但请保留作者新闻

CSS/Javascript demo

<!doctype html public “-//W3C//DTD XHTML 1.0 Strict//EN”
“;
<html xmlns=”;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″
/>
<meta name=”Keywords” content=”YES!B/S!” />
<meta name=”Description” content=”This page is from
” />
<title>CSS/Javascript demo</title>
<script type=”text/javascript” language=”javascript” >
    function test(){
        copyToClipboard(“dddd”);
    }
    copyToClipboard = function(txt) {
if(window.clipboardData) {
   window.clipboardData.clearData();
   window.clipboardData.setData(“Text”, txt);
} else if(navigator.userAgent.indexOf(“Opera”) != -1) {
window.location = txt;
} else if (window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”);
} catch (e) {
alert(“您的firefox安全范围范围您实行剪贴板操作,请张开’about:config’将signed.applets.codebase_principal_support’设置为true’之后重试”卡塔尔(قطر‎;
return false;
}
var clip =
Components.classes[‘@mozilla.org/widget/clipboard;1’].createInstance(Components.interfaces.nsIClipboard);
if (!clip)
return;
var trans =
Components.classes[‘@mozilla.org/widget/transferable;1’].createInstance(Components.interfaces.nsITransferable);
if (!trans)
return;
trans.addDataFlavor(‘text/unicode’);
var str = new Object();
var len = new Object();
var str =
Components.classes[“@mozilla.org/supports-string;1”].createInstance(Components.interfaces.nsISupportsString);
var copytext = txt;
str.data = copytext;
trans.setTransferData(“text/unicode”,str,copytext.length*2);
var clipid = Components.interfaces.nsIClipboard;
if (!clip)
return false;
clip.setData(trans,null,clipid.kGlobalClipboard);
}
}
</script>
</head>
<body>
 <button onclick=”test(卡塔尔国;”>复制到粘贴板</button>
</body>
</html>

    关于IE
WebControls,可能你曾经知道了吗,它不仅仅精美何况开源,您能够从当中学到.net控件开拓的风华正茂部分本事。方今在用它的Toolbar控件来贯彻部分工具条,嗯,用起来相当轻松,效果也不错(特别是在IE里,不加任何修饰就足以兑现象WinForm上的工具,不愧是微软支付的卡塔尔(قطر‎。不过有个毛病便是不协理顾客端事件,比如本人有个“删除”按键,想在客商点击后承认是不是删除,借使认同则交由到服务器实践删除操作,不然不交付。结果翻遍了Toolbar的兼具属性、方法也并没有找到怎么着设置让有个别开关调用特定的顾客端脚本。既然它是开源的,那就和好达成个办法吧!

复制到粘贴板

评释:Firefox的默许安全约束不容许通过JavaScript复制到剪贴板,供给提醒客商改进Firefox的设置。改正章程是张开”about:config”将”signed.applets.codebase_principal_support”设置为”true”。

   
作者的主张是为Toolbar的Button提供三个属性,通过安装该属性为叁个客商端脚本的章程的称谓来兑现脚本的调用,该方法再次回到贰个布尔值,假若为true则提交到服务器,false则不交付。

说明:Firefox的暗许安全约束不准通过JavaScript复制到剪贴板,须要提示客户改革Firefox的装置。修章是张开”about:config”将”signed.applets.codebase_principal_support”设置为”true”。

代码如下: !doctype html public
“-//W3C//DTD XHTML 1.0 Strict//EN”
“” html
xmlns=”” hea…

达成步骤:
1、通过剖判源代码,ToolbarButton类是在ToolbarButton.cs文件中落到实处的,因而ToolbarButton.cs加多ClientClickMethod属性

home88一必发 1home88一必发 2    /**//// <summary>
home88一必发 3        /// Client Method
home88一必发 4        /// </summary>
home88一必发 5        [DefaultValue(“”)]
home88一必发 6        [Category(“Behavior”)]
home88一必发 7        [ResDescription(“Client Method”)]
home88一必发 8        public string ClientClickMethod
home88一必发 9home88一必发 10        home88一必发 11home88一必发,{
home88一必发 12            get
home88一必发 13home88一必发 14            home88一必发 15{
home88一必发 16                object obj = ViewState[“ClientClickMethod”];
home88一必发 17                return (obj == null) ? String.Empty : (string)obj;
home88一必发 18            }
home88一必发 19
home88一必发 20home88一必发 21            set home88一必发 22{ ViewState[“ClientClickMethod”] = value; }
home88一必发 23        }

 
2、改过WriteItemAttributes方法将品质钦赐的法门对应到客商端控件的onclick方法上
 

home88一必发 24protected override void WriteItemAttributes(HtmlTextWriter writer)
home88一必发 25home88一必发 26        home88一必发 27{
home88一必发 28            base.WriteItemAttributes(writer);
home88一必发 29
home88一必发 30            string style = HoverStyle.CssText;
home88一必发 31            if (style != String.Empty)
home88一必发 32home88一必发 33            home88一必发 34{
home88一必发 35                writer.WriteAttribute(“hoverstyle”, style);
home88一必发 36            }
home88一必发 37            style = SelectedStyle.CssText;
home88一必发 38            if (style != String.Empty)
home88一必发 39home88一必发 40            home88一必发 41{
home88一必发 42                writer.WriteAttribute(“selectedstyle”, style);
home88一必发 43            }
home88一必发 44 
home88一必发 45            writer.WriteAttribute(“onkeydown”, “if (event.keyCode==13){event.returnValue=false}”);
home88一必发 46            
home88一必发 47            //add by donna,2006-08-02
home88一必发 48            if (ClientClickMethod != String.Empty)
home88一必发 49home88一必发 50            home88一必发 51{
home88一必发 52             writer.WriteAttribute(“onclick”,”try{event.srcElement._IsCanceled=!” + ClientClickMethod +”}catch(e){event.srcElement._IsCanceled=true;}”);
home88一必发 53            }
home88一必发 54            //add end
home88一必发 55            
home88一必发 56        }
home88一必发 57
home88一必发 58

    您只怕会问,为啥不用形似onclick=”return
confirm(‘Message’卡塔尔国;”的法子来实现呢?原因为是IE在显示有Toolbar的页面时是调用toolbar.htc中的脚本来生成Toolbar的(那也便是干吗安装IE
WebControls时要把Runtime目录下的剧情复制到Web站点根目录下的webctrl_client1_0目录下的来头卡塔尔(英语:State of Qatar),而它的__doPostBack方法是在全体Toolbar上调用,并非有些ToolButton上调用的,尽管在ToolButton上return
false了但无法阻碍其PostBack,因而这里运用了生龙活虎种变化的秘籍,先在ToolButton的onclick中安装三个标注即event.srcElement._IsCanceled,然后在PostBack在此之前检查这些标识,假使为true则不提交。
3、修改toolbar.htc脚本

home88一必发 59function f_OnClick()
home88一必发 60home88一必发 61home88一必发 62{
home88一必发 63    if (_IsSubmitting || !_Ready)
home88一必发 64        return;
home88一必发 65
home88一必发 66    //add by donna 2005-08-02;用来在IE中判定是或不是足以交到
home88一必发 67    if (event.srcElement.getAttribute(“_IsCanceled”)) 
home88一必发 68        return;
home88一必发 69    //add end
home88一必发 70
home88一必发 71    var oCell = f_FindSurroundingCell(event.srcElement);
home88一必发 72    if ((oCell != null) && (!oCell.isDisabled))
home88一必发 73        f_SelectItem(oCell);
home88一必发 74    _KeyboardClick = false;
home88一必发 75}
home88一必发 76
home88一必发 77

4、腹背之毛,校勘runtime文件的路子
   
假使您不愿意把Runtime目录下的内容复制到Web站点根目录下的webctrl_client1_0目录中,您即使改一下BaseRichControl.cs文件的AddPathToFilename函数就可以,这里把它改到了虚构目录的webctrl_client1_0目录中

home88一必发 78  internal static string AddPathToFilename(HttpContext context, string filename)
home88一必发 79home88一必发 80        home88一必发 81{
home88一必发 82            //modified by donna,2006-8-2
home88一必发 83            return context.Request.ApplicationPath + “/webctrl_client/1_0/” + filename;
home88一必发 84            //modify end
home88一必发 85            
home88一必发 86            //return FindCommonPath(context) + filename;
home88一必发 87        }

 

   
今后得以实行效果了,结果发今后IE中一切符合规律,在Firefox中完全未有效劳,比较IE和Firefox生成的HTML代码发掘asp.net对他们的落到实处机制不平等(具体也不太通晓,知道的对象能够说说卡塔尔国。
5、支持Firefox
    修改ToolbarButton.cs文件AddAnchorAttributes方法

home88一必发 88    //modified by donna,2006-8-8;用来援救FireFox
home88一必发 89            if (ClientClickMethod != String.Empty)
home88一必发 90home88一必发 91            home88一必发 92{
home88一必发 93             writer.AddAttribute(HtmlTextWriterAttribute.Href, “javascript:if (” + ClientClickMethod.Replace(“;”,””) + “){” + AnchorHref + “;}”);
home88一必发 94             
home88一必发 95            }
home88一必发 96            else
home88一必发 97home88一必发 98            home88一必发 99{
home88一必发 100             writer.AddAttribute(HtmlTextWriterAttribute.Href, “javascript:” + AnchorHref);
home88一必发 101            }
home88一必发 102            //modify end

 

动用方法:
1、运转build.bat编写翻译控件;
2、将srcruntime目录下具有内容复制到你的WEB应用程序目录的webctrl_client1_0目录下;
3、请仿照效法演示程序行使。

环境:WIN2003、IIS6、VS2003、Framework1.1、IE6、FireFox1.5

 效果图
home88一必发 103

代码下载

donna.zdn@gmail.com

相关文章