以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  调用写在一个js文件里的2个函数,发现复制不成功  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=118691)

--  作者:zhangjian222200
--  发布时间:2018/5/8 23:18:00
--  调用写在一个js文件里的2个函数,发现复制不成功
页面代码:
With wb.AddButtonGroup("form1","btg3",False)
            .Add("btn3s25", "复制微信", "button").Attribute= "onclick=""copyText(\'" & bweixh & "\');ajaxform_per_tayaoqing_xqfz(15);"""  ’这里调用写在一个js文件里的2个函数,发现复制不成功
end with

js代码:
function ajaxform_per_tayaoqing_xqfz(idx){
    //alert("ok");
    document.getElementById("tadefk").value = idx
    var result = submitAjaxForm(\'form1\',\'\',false);
    if (result ==\'OK\') {show(\'dlg1\')}
    else if (result ==\'您可能掉线了!\') {show(\'dlg2\')}
}


function copyText(str)
   {
    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备
     window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效
     var Url2=document.getElementById("neirong1");//要复制文字的节点
     Url2.innerHTML = str;
     var range = document.createRange();
     // 选中需要复制的节点
     range.selectNode(Url2);
     // 执行选中元素
     window.getSelection().addRange(range);
     // 执行 copy 操作
     var successful = document.execCommand(\'copy\');

     // 移除选中的元素
     window.getSelection().removeAllRanges();
    }else{
     var Url2=document.getElementById("neirong2");//要复制文字的节点
     Url2.value = str;
     Url2.select(); // 选择对象
     document.execCommand("Copy"); // 执行浏览器复制命令
    }

    alert("复制微信成功!请加ta微信!");
   }

响应页面:
    ElseIf tadefk = 15 Then \'即他的反馈等于15 \'已改在前一个页面复制,这里只是保存复制状态
        dryqbh("复制微信") = "已经复制"
        dryqbh.save
        e.WriteString("复制微信成功!") 
        Return ""
    End If


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:上述代码112.txt


[此贴子已经被作者于2018/5/8 23:20:17编辑过]

--  作者:有点甜
--  发布时间:2018/5/9 9:00:00
--  

1、浏览器那里,有么有报错?

 

2、加入alert能否弹出?

 

3、你ajax最后return的是空白字符串,不是OK,你要注意这一点。


--  作者:zhangjian222200
--  发布时间:2018/5/9 12:38:00
--  
点这个按钮 .Add("btn3s25", "复制微信", "button"),截面没有任何反应

1.在微信公众号上执行的,没有提示,没有看到浏览器提示。另外,之前我把那个不提示错误的属性改为true了
2.js立面的alert("复制微信成功!请加ta微信!");没有执行

晚上测试第3条

--  作者:有点甜
--  发布时间:2018/5/9 14:15:00
--  

1、在你电脑浏览器或者手机浏览器执行能否正常?

 

2、alert写在js的第一句或者中间,多写几句alert,看哪句代码有问题。


--  作者:zhangjian222200
--  发布时间:2018/5/9 22:41:00
--  
function ajaxform_per_tayaoqing_xqfz(idx){
    alert("ok-idx");
    document.getElementById("tadefk").value = idx
    var result = submitAjaxForm(\'form1\',\'\',false);
    if (result ==\'OK\') {show(\'dlg1\')}
    else if (result ==\'您可能掉线了!\') {show(\'dlg2\')}
}


function copyText(str)
   {
    alert("str1");
    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备
     window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效
     var Url2=document.getElementById("neirong1");//要复制文字的节点
     Url2.innerHTML = str;

    alert("str2");
     var range = document.createRange();
     // 选中需要复制的节点
     range.selectNode(Url2);
     // 执行选中元素
     window.getSelection().addRange(range);
     // 执行 copy 操作
     var successful = document.execCommand(\'copy\');

    alert("str2");
     // 移除选中的元素
     window.getSelection().removeAllRanges();
    }else{
    alert("str3");
     var Url2=document.getElementById("neirong2");//要复制文字的节点
    alert("str4");  //1楼代码放在服务器上,直接修改lib文件夹里面的这段js代码,直接在手机微信公众号里测试,页面正常,没有什么提示,发现这里执行str4后,之后的alert都不弹出,我是华为麦芒4手机
     Url2.value = str;
    alert("str5");
     Url2.select(); // 选择对象
    alert("str6");
     document.execCommand("Copy"); // 执行浏览器复制命令
    alert("str7");
    }
    alert("str8");
    alert("复制微信成功!请加ta微信!");
   }


刚刚测试了其他地方,使用上述js代码,就可以复制成功,估计是返回空值造成的,正在继续测试
[此贴子已经被作者于2018/5/9 23:00:01编辑过]

--  作者:有点甜
--  发布时间:2018/5/9 23:15:00
--  
以下是引用zhangjian222200在2018/5/9 22:41:00的发言:

刚刚测试了其他地方,使用上述js代码,就可以复制成功,估计是返回空值造成的,正在继续测试
[此贴子已经被作者于2018/5/9 23:00:01编辑过]

 

其它地方那里测试alert弹出什么?在微信那里alert弹出什么?

 

如果最后的alert没有弹出,就是js在微信浏览器那里不兼容造成的。

 

https://www.baidu.com/baidu?wd=%E5%BE%AE%E4%BF%A1+js+%E6%8B%B7%E8%B4%9D

 


--  作者:zhangjian222200
--  发布时间:2018/5/9 23:25:00
--  
页面代码:
With wb.AddButtonGroup("form1","btg3",False)
            .Add("btn3s25", "复制微信", "button").Attribute= "onclick=""copyText(\'" & bweixh & "\');ajaxform_per_tayaoqing_xqfz(15);"""
end with

5楼最后说的是响应页面,添加了下述粉色代码

    If tadefk = 15 Then \'即他的反馈等于15
        dryqbh("女生复制微信") = "已经复制"
        dryqbh.save
        e.WriteString("复制微信成功!") 
        Return ""
    End If

js代码:

function ajaxform_per_tayaoqing_xqfz(idx){
    alert("ok-idx");
    document.getElementById("tadefk").value = idx
    var result = submitAjaxForm(\'form1\',\'\',false);
    if (result ==\'OK\') {show(\'dlg1\')}
    else if (result ==\'您可能掉线了!\') {show(\'dlg2\')}
    else if (result ==\'复制微信成功!\') {show(\'dlg3\')}  //测试发现dlg对应的消息提示没有弹出,返回的消息放在这,行吗?楼上的微信浏览器复制代码需要放进js,还是写在哪?
}


function copyText(str)
   {
    alert("str1");
    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备
     window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效
     var Url2=document.getElementById("neirong1");//要复制文字的节点
     Url2.innerHTML = str;

    alert("str2");
     var range = document.createRange();
     // 选中需要复制的节点
     range.selectNode(Url2);
     // 执行选中元素
     window.getSelection().addRange(range);
     // 执行 copy 操作
     var successful = document.execCommand(\'copy\');

    alert("str2");
     // 移除选中的元素
     window.getSelection().removeAllRanges();
    }else{
    alert("str3");
     var Url2=document.getElementById("neirong2");//要复制文字的节点
    alert("str4");  //代码放在服务器上,直接修改lib文件夹里面的这段js代码,直接在手机微信公众号里测试,页面正常,没有什么提示,发现这里执行str4后,之后的还是alert都不弹出,我华为麦芒4手机
     Url2.value = str;
    alert("str5");
     Url2.select(); // 选择对象
    alert("str6");
     document.execCommand("Copy"); // 执行浏览器复制命令
    alert("str7");
    }
    alert("str8");
    alert("复制微信成功!请加ta微信!");
   }
[此贴子已经被作者于2018/5/10 8:53:32编辑过]

--  作者:有点甜
--  发布时间:2018/5/10 9:14:00
--  

如果alert(4)之后不弹出,就是这句代码有问题  Url2.value = str

 

你有叫做【neirong2】的元素吗?你页面必须有,才能引用和赋值的。


--  作者:zhangjian222200
--  发布时间:2018/5/10 9:38:00
--  
哦,没有neirong2元素

在可以复制的页面上,发现了如下代码
wb.InsertHTML("<div id=\'neirong1\' style=\';position: absolute;left:-200px; color: rgba(0,0,0,0);background-color: transparent\'></div>")
wb.InsertHTML("<input read style=\'outline: none;border: 0px; color: rgba(0,0,0,0.0);position: absolute;left:-200px; background-color: transparent\' id=\'neirong2\' value=\'\'/>")
[此贴子已经被作者于2018/5/10 9:39:27编辑过]

--  作者:zhangjian222200
--  发布时间:2018/5/10 10:07:00
--  
 可以了,太感谢了