一个怪异的客户需求:
javascript获取页面图片,拷贝到剪切板然后,可以从剪切板将该图片拷贝到excel,word文件中(可以实现),最怪异的是,要从系统画图程序的菜单中可以直接将剪切板的图片粘贴(主要难点)。请各位大虾帮忙了,谢过!
另外,在客户端要复制页面上的图片,用javascript简单执行execCommand("copy")命令拷贝是否可行(因为实际页面中只是img的src地址,这样在服务器端可以做到,客户端可以吗?)还是需要将页面图片下载到客户端本地后再拷贝处理呢?以上,冥思苦想不得结果救命啊!111

解决方案 »

  1.   

    不好做,除非做一个客户端ActiveX控件,建议否掉这个需求
      

  2.   

    昨天试验了一下,但感觉不是很好,javascript中
    oneimgpaster.document.designMode = 'On';
    oneimgpaster.document.write("<body></body>");
    oneimgpaster.document.body.innerHTML = obj.outerHTML;
    oneimgpaster.document.body.createTextRange().select();
    oneimgpaster.document.execCommand("copy","false",null);
    原理中,要拷贝图片必须借助html编辑器,这样进入剪贴板的就是“text”格式,而不是image格式,要从系统画图程序的菜单中可以直接将剪切板的图片粘贴无法实现;
    另外,因为web服务器和客户端都在一个机器上,所以暂时可以将图片拷贝到excel文件中,如果换一个客户端的话,拷贝出来的是空白;
    大家给出出主意吧
      

  3.   

    回答ladofwind(随风) 的提议
    做一个客户端ActiveX控件从实现和操作上都比较麻烦;如果实在不行的话,我可以考虑做下载类,但这比起直接使用javascrpt操作客户端对象来说,也很麻烦。
    我想现在关注的重点是,如何利用javascript就能够实现图片真正复制到剪贴板的功能(网上很多抄来抄去的操作剪切板的方法都是针对文本内容格式的,没有找到针对图片)奋起!
      

  4.   

    回答qxqy_1983() 的提议
    现在看来否掉是不可能了,客户又加要求,页面不许右击出菜单,这样一来,就必须实现复制的功能了。现在的客户越来越懂it了,也越来越有幻想力了,同志们,要守住我们的堡垒阿!
      

  5.   

    这个确实很难实现。
    如果用javascript做的话,实现起来相当复杂,并且效果也不是很好。
    如果用window控件的话,又绑定了。
      

  6.   

    回复huxinsheng168(望M止渴)
    现在在实验中,如果服务器和客户机不在同一机器上时好像无法拷贝页面图片不知谁有这方面的经验。。
      

  7.   

    我想到一个方法,服务器上将图片用base64转码换成文字,然后javascript将编码还原成字节流写入剪贴板,不知可行否
      

  8.   

    我想到一个方法,服务器上将图片用base64转码换成文字,然后javascript将编码还原成字节流写入剪贴板,不知可行否
      

  9.   

    回复dreamover(梦醒了) 
    多谢方案!
    不过这个方法要动很多东西,session的filter似乎也不允许。。
      

  10.   

    大家帮帮忙:
      http://community.csdn.net/Expert/topic/4894/4894864.xml?temp=.480221
      

  11.   

    rikugaku(rikugaku) ( ) 信誉:100  2006-07-21 08:18:00  得分: 0  
      
       现在看来否掉是不可能了,客户又加要求,页面不许右击出菜单,这样一来,就必须实现复制的功能了。现在的客户越来越懂it了,也越来越有幻想力了,同志们,要守住我们的堡垒阿!
    ================================================================
      哈哈“越来越有幻想力了”,遇到这种客户有时我都想扁人!
      
     
      

  12.   

    他给你实现,你贴他钱,否则就别让他乱搞。
    怎么不说靠javascript格式化硬盘呢
      

  13.   

    先用脚本让图像为被选择 在模拟键盘操作 按下ctrl+c var WshShell = new ActiveXObject("Wscript.Shell");try{WshShell.SendKeys("^c");} 
    catch(e){} WshShell.Quit; 
    说不定可以。
      

  14.   

    如果局限在 IE 浏览器的话,下面的方法可以做到:<script>
    function fnCopyIt() {
        oControlRange = document.body.createControlRange();
        oControlRange.add(oImg);
        oControlRange.execCommand("copy");
    }
    </script>
    <img id="oImg" src="http://zi.csdn.net/120.60_4.gif">
    <button onclick="fnCopyIt()">fnCopyIt()</button>
      

  15.   

    maquan('ma:kju) ( ) 信誉:100 如果局限在 IE 浏览器的话,下面的方法可以做到:<script>
    function fnCopyIt() {
        oControlRange = document.body.createControlRange();
        oControlRange.add(oImg);
        oControlRange.execCommand("copy");
    }
    </script>
    <img id="oImg" src="http://zi.csdn.net/120.60_4.gif">
    <button onclick="fnCopyIt()">fnCopyIt()</button>========================================================佩服,佩服,我对你的景仰尤如滔滔江水,连绵不绝~~~
      

  16.   

    现在宣布结贴!鼓掌,,瓜瓜瓜瓜瓜
    非常感谢大家的支持和帮助,和客户商量之后,整个方案改为通过数据库来进行操作,这样就可以避免javascript上许多隐藏未知的问题了。(
    回答maquan('ma:kju) 的方法-----------maquan强人!javascript超人,呵..
    方法蛮棒!多谢支持!
    不过有个缺陷就是:由于用到了execCommand函数(黑客好像经常用这个),浏览器版本和设置不同的话,开始会跳出安全警告,对于充满幻想力却又不懂计算机的用户来说可能是天大的威胁和困惑。
    dreamover的想法可以考虑,现在朝这个方向进军中。
    )对于大伙的支持,在下不胜感激,痛哭流涕结贴。