阅读:2327回复:7
【已解决】function 函数调用问题请教,谢谢。。
function 函数调用问题请教,谢谢。。
CopyTitleUrl:function () //复制标题和链接 { title = CopyLinkNameAndURLOverlay.Copytitle(); // 函数在下面定义了 ,这行调用出错 ,如何在这调用赋值。 var url=window.content.location.href; Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(title+' '+url); }, // 返回了title 没有了 url 变量。。 Copytitle:function () //复制过滤后的标题 { 代码 }; 出错,如果是单独调用 CopyTitleUrl:function () //复制标题和链接 { CopyLinkNameAndURLOverlay.Copytitle(); } 就可以用。请问各位大大如何修改调用。。谢谢了。。 |
|
|
1楼#
发布于:2015-07-17 22:52
|
|
|
2楼#
发布于:2015-07-17 14:44
1. “// 返回了title 没有了 url 变量。。 ”
顶楼(0楼)楼主应该是说错了吧,url和title调转了? 2. “CopyTitleUrl”内的 “title = CopyLinkNameAndURLOverlay.Copytitle();” 应该加上var ↓ var title = CopyLinkNameAndURLOverlay.Copytitle(); 不然变量变成全局变量。(其它函数内也有同样的问题,例如r、rr、pageurl,应先用var关键字声明一下) 3. 由4楼的代码看。Copytitle的函数体最后一行应该加上“return r;”, 【2.】中的title才能得到返回值啊,不然只能得到undefined。 |
|
3楼#
发布于:2015-07-17 13:26
想在
CopyTitleUrl:function () //复制标题和链接 { var title=window.content.document.title; title 能否换成调用 Copytitle:function () //复制当前标题 的值。 |
|
|
4楼#
发布于:2015-07-17 13:21
[quote=taoww,348228]看样子你是在弄扩展了。你先分清楚扩展代码执行的chrome环境和页面代码执行的content环境。
title要用局部变量,window.content.location.href不见得适用于chrome环境。 var CopyLinkNameAndURLOverlay= { Init:function () { var nsSS=Components.interfaces.nsISupportsString; document.getElementById("contentAreaContextMenu").addEventListener("popupshowing",CopyLinkNameAndURLOverlay.linkPopup,true); var oPref=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions."); var ss=Components.classes["@mozilla.org/supports-string;1"].createInstance(nsSS); ss.data=document.getElementById("clnu-link-context").getAttribute('statustext'); oPref.setComplexValue("copylinknameandurl@livemylife.cn.description",nsSS,ss); }, linkPopup:function () { document.getElementById("clnu-link-context").hidden=(!gContextMenu.onLink); document.getElementById("clnu-tabbar-context").hidden=(gContextMenu.onLink||gContextMenu.isTextSelected||gContextMenu.onImage||gContextMenu.onTextInput); document.getElementById("clnu-tabbar-contexturl").hidden=(gContextMenu.onLink||gContextMenu.isTextSelected||gContextMenu.onImage||gContextMenu.onTextInput); }, Copyhost:function () //复制域名 { var location=gBrowser.webNavigation.currentURI; var domain=''; domain=location.host; Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(domain); }, CopyName:function () // 复制链接名称 { var urlname=gContextMenu.linkText(); urlname=urlname.replace(/\(.*?\)/g,''); Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(urlname); }, CopyTitleUrl:function () //复制标题和链接 { var title=window.content.document.title; var url=window.content.location.href; if(url.indexOf("read.qidian.com")>0) { rr=url.replace('read.qidian','www.qidian'); } else if(url.indexOf("www.qidian.com/Book/")>0) { rr=url.replace('www.qidian.com\/Book\/','www.qidian.com\/BookReader\/'); } else { rr=url } Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(title+' '+rr); }, Copytitle:function () //复制当前标题 { var title=window.content.document.title; pageurl=window.content.location.href; if(pageurl.indexOf("127.0.0.1")>0) { r=title.split(/,.{1,20},/,1); } else if(pageurl.indexOf("book.zongheng.com")>0) { r=title.split('最新章节,',1); // 最新章节,xx txt全集下载,免费全文阅读-纵横中文网 } else { r=title } Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(r); }, Copyurl:function () //复制当前网址 { var url=window.content.location.href; if(url.indexOf("read.qidian.com")>0) { rr=url.replace('read.qidian','www.qidian'); } else if(url.indexOf("www.qidian.com/Book/")>0) { rr=url.replace('www.qidian.com\/Book\/','www.qidian.com\/BookReader\/'); } else { rr=url } Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(rr); } } window.addEventListener("load",CopyLinkNameAndURLOverlay.Init,true); 在火狐上用啊。。代码如上。。 |
|
|
5楼#
发布于:2015-07-17 12:03
看样子你是在弄扩展了。你先分清楚扩展代码执行的chrome环境和页面代码执行的content环境。
title要用局部变量,window.content.location.href不见得适用于chrome环境。 var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser"); var currBrowser = currentWindow.getBrowser(); var currURL = currBrowser.currentURI.spec; |
|
6楼#
发布于:2015-07-17 08:48
|
|
|
7楼#
发布于:2015-07-16 01:17
Components.classes早已不再暴露给页面环境。
要操作剪贴板,目前兼容性最好的方案还是用flash来干这事,就像本论坛一样。但缺点是必须要有用户的动作 如果用firefox 41+,可以用document.execCommand('copy')来做 https://developer.mozilla.org/en-US/Firefox/Releases/41#InterfacesAPIsDOM |
|