使用javascript for phonegap复制到剪贴板

Boj*_*jan 9 javascript cordova

我正在使用javascript/mobile-jquery接口为phonegap平台开发一个应用程序.现在我在网上看到了很多试图复制到剪贴板的例子,不幸的是它们都没有为我工作.我对浏览器中的功能不感兴趣,只要它通过手机间隙转换后就可以工作了,我很高兴.

我曾尝试使用zeroclipboard,它没有锻炼,我试过使用剪贴板管理器无法让它工作.我已经尝试了很多其他的例子,我在stackoverflow上找到了这些例子,包括google搜索,但它们仍然无法正常工作,这是我尝试过的一个例子:

window.plugins.clipboardManager.copy(
                "the text to copy",
                function(r){alert("copy is successful")},
                function(e){alert(e)}
            );
Run Code Online (Sandbox Code Playgroud)

我已经包含了js文件:

    <script src="src/clipboardmanager.js"></script>
Run Code Online (Sandbox Code Playgroud)

我也有文件夹结构中的java文件,如下所示: src\com\saatcioglu\phonegap\clipboardmanager\ClipboardManagerPlugin.java

从我读过的内容来看,我需要包含一个xml文件才能正常工作,但就我而言,我无法在任何地方找到该XML文件.

任何帮助都非常感谢.

注意:我的应用程序不需要任何权限,如相机,GPS等...

编辑:

我试过的另一个例子是:

function select_all(obj) {
    var text_val=eval(obj);
    text_val.focus();
    text_val.select();
    if (!document.all) return; // IE only
    r = text_val.createTextRange();
    r.execCommand('copy');
}
Run Code Online (Sandbox Code Playgroud)

这适用于IE,但不适用于Phonegap.

编辑:

这是我正在使用的html/javascript:

<html>
    <head>
        <title>Test</title>
            <link rel="stylesheet" href="jquery/jquery.mobile-1.3.1.min.css" />
        <script src="jquery/jquery-1.9.1.min.js"></script>
        <script src="jquery/jquery.mobile-1.3.1.min.js"></script>
            <script src="clipboardmanager.js"></script>
        <script>
                var cbm = new window.plugins.clipboardManager;
                function main(textMessage)
                {
            //Some Code before this (calculations)
                    cbm.copy(
                        "Success!!!",
                        function(r){alert("copy is successful")},
                        function(e){alert(e)}
                    );
                }
            </script>
        </head>
        <body>
        <div data-role="page" id="main" name="main">
            <div data-role="header">
                <h1>Test</h1>
                </div><!-- /header -->

            <div data-role="content">
                <form action="javascript:main(encryptedMessage.value);">
                    Message to be Copied:
                    <textarea id="encryptedMessage" name="encryptedName" rows="6" style="width:99%;"></textarea>
                    <input type="submit" value="Encrypt" />
                </form>
                </div>
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的根文件夹中,我有:

  1. 一个名为jquery的文件夹,里面有jquery脚本.
  2. 一个名为res的文件夹,它有一个名为xml的文件夹,它有一个名为plugin.xml的文件
  3. 一个名为src的文件夹,它有一个名为com的文件夹,它有一个名为saatcioglu的文件夹,它有一个名为phonegap的文件夹,它有一个名为clipboardmanager的文件夹,它有一个名为ClipboardManagerPlugin.java的文件.
  4. 的test.html
  5. clipboardmanager.js

plugin.xml的内容

<?xml version="1.0" encoding="utf-8"?>
<plugins>
    <gap:plugin name="clipboardmanager" value="com.saatcioglu.phonegap.clipboardmanager.ClipboardManagerPlugin.ClipboardManagerPlugin" />
</plugins>
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

e-s*_*shi 6

首先:IE选项不适用于Android,因为PhoneGap使用Webkit(想想:Safari和/或Chrome).

无论如何...

您要查找的文件(在项目目录的"/ res/xml /"子目录中)被调用

config.xml
Run Code Online (Sandbox Code Playgroud)

在那里,你必须告诉phonegap在编译时加载插件,就像这样......

<gap:plugin name="whatever" value="com.example.whatever" />
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,phonegap将不会在编译时包含插件,导致你的插件无法工作(因为它在编译的apk中不存在).

我还没有使用过ClipboardManagerPlugin,但根据文档,它应该有点像这样:

<gap:plugin name="clipboardmanager" value="com.saatcioglu.phonegap.clipboardmanager.ClipboardManagerPlugin.ClipboardManagerPlugin" />
Run Code Online (Sandbox Code Playgroud)

请注意,您应该检查您正在使用的PhoneGap版本以及该插件是否兼容.万一你不知道它:并非所有插件都已更新,以便与PhoneGap 3.x一起使用.引用Github上的自述文件(https://build.phonegap.com/docs/plugins-using):"除非明确说明,否则大多数这些插件都无法与Cordova/PhoneGap 3.xx开箱即用.他们将需要更新才能通过plugin add界面使用."


Mar*_*com 5

e-sushi的说明对我来说并不适用.

为了让插件运行,我使用了以下命令:

phonegap local plugin add https://github.com/VersoSolutions/CordovaClipboard
Run Code Online (Sandbox Code Playgroud)

然后在JS中添加以下命令:

cordova.plugins.clipboard.copy(text);
Run Code Online (Sandbox Code Playgroud)