使用JavaScript在PhoneGap中复制到剪贴板

9
我正在使用JavaScript/mobile-jQuery接口为PhoneGap平台开发应用程序。现在我在网上看到了很多尝试复制到剪贴板的示例,但不幸的是没有一个适用于我。我不关心它在浏览器中是否能正常工作,只要它被PhoneGap转换后能够工作就可以了。
我已经尝试使用过ZeroClipboard,但它没有成功,我也试过使用剪贴板管理器,但没能让它工作。我尝试了许多在Stack Overflow和Google搜索中找到的其他示例,但它们仍然无法正常工作。以下是我尝试过的一些示例:
window.plugins.clipboardManager.copy(
                "the text to copy",
                function(r){alert("copy is successful")},
                function(e){alert(e)}
            );

我已经包含了js文件:
    <script src="src/clipboardmanager.js"></script>

我还有一个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');
}

这在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>

在我的根目录下,有以下文件夹:
  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>

我哪里做错了?

他说他已经在使用Cordova(又名Phonogap)。 - dandavis
2个回答

6
首先:IE选项在Android上不起作用,因为PhoneGap使用Webkit(类似于Safari和/或Chrome)。
无论如何...
你要找的文件(在项目目录的"/res/xml/"子目录中)称为:
config.xml

在这里,您需要告诉PhoneGap在编译时加载插件,就像这样...
<gap:plugin name="whatever" value="com.example.whatever" />

如果你不这样做,PhoneGap在编译时将不会包含插件,导致你的插件无法工作(因为它不存在于已编译的apk中)。
我还没有使用过ClipboardManagerPlugin,但根据文档,应该是这样的:
<gap:plugin name="clipboardmanager" value="com.saatcioglu.phonegap.clipboardmanager.ClipboardManagerPlugin.ClipboardManagerPlugin" />

请注意,您应该检查正在使用的PhoneGap版本以及插件是否与其兼容。如果您不知道:并非所有插件都已更新以与PhoneGap 3.x兼容。引用自readme 在Github上(https://build.phonegap.com/docs/plugins-using)"除非明确说明,否则这些插件中的大多数将不能直接在Cordova/PhoneGap 3.x.x中运行。它们需要更新后才能通过plugin add接口使用。"

@Bagzli,可能是你的速度出了问题,但你在EDIT中没有像这样加载phonegap.js:*"<script src="phonegap.js"></script>"*。此外,您无法在常规浏览器中测试针对设备的phonegap功能。您需要使用处于dev-mode的设备,或者您需要使用Android SDK模拟器。 - e-sushi
嗯,我尝试在PhoneGap上部署它,但遇到了一个问题,黑莓设备无法使用src文件夹,因此无法编译。我只有一部黑莓手机来测试这个应用,所以我甚至不知道它是否有效。你知道其他可以用来复制到剪贴板的解决方案吗? - Bagzli
@Bagzli 嗯,如果您没有安装相关的SDK文件,那么您如何编写黑莓应用程序呢?这根本行不通!在浪费时间之前,您可能需要检查是否已完全安装了SDK,并具备了针对设备系统所需的所有文件。(另外一点说明:在Windows操作系统上安装SDK时,SDK会本地安装所需的Blackberry文件。而在Windows上开发Android和iPhone将更加困难。)关于您的“其他解决方案”请求:除了原生应用程序开发和phonegap之外,我看不出还有什么方法可以编写此应用程序。 - e-sushi
@Bagzli 我无法想象其他解决方案存在的原因是:如果您没有编程方式访问黑莓剪贴板,那么您如何想要访问它呢?毕竟,这就是您编写应用程序(phonegap或本机)的原因-以编程方式能够与设备系统进行交互。正如所说:您当前的现状似乎是您尚未(完全)安装PhoneGap。在能够解决相关软件问题之前,您需要应对这一点,因为您需要能够为目标设备编译应用程序。如果您不能,则无法进行开发... ;) - e-sushi
1
@Bagzli 当然可以!这也是你首选使用Phonegap的原因。Phonegap提供了一个“包装器”,使你能够编写HTML/CSS/JS代码并通过phonegap.js使用设备本地功能(如GPS、振动等)。当你的Phonegap应用程序在黑莓上运行,并且你想将同样的应用程序编译为适用于Android的应用程序时,你只需要在编译期间针对Android进行目标设置...但你不必改变你的应用程序的HTML/CSS/JS代码的一点。把Phonegap看作是你的HTML/CSS/JS和(支持的)设备本地功能之间的桥梁。同样的代码...在编译期间针对其他设备进行目标设置。完成。 - e-sushi
显示剩余3条评论

5
< p > e-sushi的指导 对我来说不太适用。

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

phonegap local plugin add https://github.com/VersoSolutions/CordovaClipboard

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

cordova.plugins.clipboard.copy(text);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接