javascript - 在 Ionic 2 中集成 JavaScript Web 插件

标签 javascript jquery ionic2 applozic

我正在尝试整合 Applozic聊天平台到我的 Ionic 2 项目,我希望将其导出到 Web、Android 和 iOS。使用 sample作为基础并创建了applozic.d.ts & applozichv.js用于 Javascript 集成过程。

applozic.d.ts

interface AppLozicStatic {
    initPlugin(): any;
}

declare var AppLozic : AppLozicStatic;
export = AppLozic;

applozichv.js
(function () {
    var root = this;

    var AppLozic = function (obj) {
        if (obj instanceof AppLozic) return obj;
        if (!(this instanceof AppLozic)) return new AppLozic(obj);
        // this.EXIFwrapped = obj;
    };

    if (typeof exports !== 'undefined') {
        if (typeof module !== 'undefined' && module.exports) {
            exports = module.exports = AppLozic;
        }
        exports.AppLozic = AppLozic;
    } else {
        root.AppLozic = AppLozic;
    }

    AppLozic.initPlugin = function () {
        var $original;
        // var $applozic = "";
        var $applozic;
        console.log("initPlugin");

        $original = jQuery.noConflict(true);
        $ = $original;
        jQuery = $original;


        if (typeof jQuery !== 'undefined') {
            console.log("initPlugin 1");


            $applozic = jQuery.noConflict(true);

            $applozic.fn
                .applozic({

                    baseUrl : 'https://apps.applozic.com',
                                    userId : 'debug454545', //TODO: replace userId with actual UserId
                                    userName : 'test',          //TODO: replace userId with actual UserName
                                        appId : 'applozic-sample-app',
//                        accessToken: 'suraj',                             //TODO: set user access token.for new user it will create new access token

                    ojq: $original,
                    // obsm: oModal,

                    //optional, leave it blank for testing purpose, read this if you want to add additional security by verifying password from your server https://www.applozic.com/docs/configuration.html#access-token-url
                    //  authenticationTypeId: 1,    //1 for password verification from Applozic server and 0 for access Token verification from your server
                    //  autoTypeSearchEnabled : false,
                    //  messageBubbleAvator: true,
                    notificationIconLink: "https://www.applozic.com/resources/images/applozic_icon.png",
                    notificationSoundLink: "",
                    readConversation: readMessage, // readMessage function defined above
                    onInit: onInitialize, //callback function execute on plugin initialize
                    maxAttachmentSize: 25, //max attachment size in MB
                    desktopNotification: true,
                    locShare: true,
                    video: true,
                    topicBox: true,
//                        mapStaticAPIkey: "AIzaSyCWRScTDtbt8tlXDr6hiceCsU83aS2UuZw",
//                        googleApiKey: "AIzaSyDKfWHzu9X7Z2hByeW4RRFJrD9SizOzZt4" // replace it with your Google API key
                    // initAutoSuggestions : initAutoSuggestions //  function to enable auto suggestions
                });
        }
        var oModal = "";

        /*if (typeof $original !== 'undefined') {
            $ = $original;
            jQuery = $original;
            if (typeof $.fn.modal === 'function') {
                oModal = $.fn.modal.noConflict();
            }
        } else {
            $ = $applozic;
            jQuery = $applozic;
            if (typeof $applozic.fn.modal === 'function') {
                oModal = $applozic.fn.modal.noConflict();
            }
        }*/

        //Sample json contains display name and photoLink for userId


        function readMessage() {
            //console.log(userId);
        }


        //callback function execute after plugin initialize.
        function onInitialize(response, data) {
            if (response.status === 'success') {
                // $applozic.fn.applozic('loadContacts', {'contacts':contactsJSON});
                // $applozic.fn.applozic('loadTab', 'shanki.connect');
                //write your logic exectute after plugin initialize.
                alert("success");
            } else {
                alert(response.errorMessage);
            }
        }


        // init();

    };


})();

我添加了所有上面创建的文件,包括 applozic.common.js , applozic.fullview.jsjquery.min.jsassets/js文件夹并将它们链接到我的index.html .这是我在 applozic.js 中获得 JavaScript 方法的唯一方法。从我的 chat.ts 执行.

我现在面临的问题是我收到错误:
TypeError: Cannot read property 'noConflict' of undefined` in `applozic.js`

在线上
$original = jQuery.noConflict(true);

因此 if block 的其余部分也没有执行。

为了使 jQuery 在项目中工作,我尝试通过执行以下命令通过 NPM 安装它:
npm install jquery --save
npm install @types/jquery --save

但这导致了 ionic serve 中的问题给出以下错误:
JavaScript heap out of memory

我真的需要帮助来执行我的applozic.js文件来初始化和调用聊天插件函数。

最佳答案

您应该首先确定实际问题。
如果问题出在 jquery 安装中,那么您可以使用以下行对其进行调试。console.log("Jwuery Text : " , $('.testClassName'));如果低于 log完全打印在控制台中,那么 jquery 中没有错误.
此内存大小问题已使用 reInitialize 解决。使用此命令进行内存堆:

set NODE_OPTIONS=--max_old_space_size=4096
or
node --max_old_space_size=4096
在此命令运行到命令提示符后,尝试服务项目或构建项目。

关于javascript - 在 Ionic 2 中集成 JavaScript Web 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47690768/

相关文章:

android - Appium 测试工具无法识别 ionic 应用程序中的元素 ID

ionic2 - Ionic 2、如何正确使用alert

javascript - addClass 到当前 li 元素并 removeClass

javascript - href标识的区别

jquery - 超大 - 如何拉伸(stretch)图像?

typescript - 如何设置每 X 分钟本地通知一次?

javascript - Javascript 中是否可以进行元编程?

javascript - Angular 2 RC 4 "(SystemJS) Can' t 解析 [object Location] : "in IE 11 的所有参数

javascript - 集合中的 Backbone 集合

javascript - 如何在 php 代码中使用 jQuery 变量?