onclick在ios18失效而在安卓手机上面正常运行的uni-app问题

onclick在ios18失效而在安卓手机上面正常运行的uni-app问题

产品分类:

HTML5+

HBuilderX版本号:

4.57

手机系统:

iOS

手机系统版本号:

iOS 18

手机厂商:

苹果

手机机型:

se2

打包方式:

云端

App下载地址或H5网址:

https://apps.apple.com/cn/app/%E4%BA%92%E4%BA%AB%E7%A4%BE%E5%8C%BA/id1550773270

示例代码:

"webviewParameter": {
    "titleNView": {  
        "autoBackButton": false,  
        "backgroundColor": "#ffffff", //导航栏背景色  
        "titleColor": "#000000", //标题颜色  
        "padding-right": "12px",  
        "titleSize": "15px",//标题字体大小    
        "titleText": "互享社区",  
        "buttons": [   
            {  
                "float": "left",  
                "fontSrc": "_www/fonts/iconfont.ttf", // 引用本地字体文件  
                "fontSize": "23px",  
                "text": "\ue649"  
            },   
            {   
                "float": "right",  
                "fontSrc": "_www/fonts/iconfont.ttf", // 引用本地字体文件  
                "fontSize": "18px",  
                "text": "\ue607",  
                "onclick": "javascript:plus.webview.getWebviewById('menu').evalJS('menu()');"  
            }  
        ]  
    }, 
}
function menu() {
    plus.webview.currentWebview().show();
}

mui("#topPopover").popover('toggle');

document.addEventListener('plusready', function() {
    mui("body").on('tap', 'a', function() {
        var id = this.getAttribute('id');
        if (id == "appshare") {
            plus.webview.getWebviewById('share').evalJS('sharepage.showShareBox()');
        } else if (id == "appscan") {
            if (checkCameraPermission()) {
                openScanner();
            } else {
                requestCameraPermissionWithPrompt();
            }
        } else if (id == "fx") {
            plus.webview.getWebviewById('share').evalJS('sharepage.showShareBox()');
        } else if (id == "hc") {
            plus.nativeUI.toast("正在清理缓存");
            setTimeout(function() {
                plus.cache.clear(function() {
                    plus.nativeUI.toast("清理完成");
                    plus.runtime.restart();
                });
            }, 300);
        } else if (id == "applet") {
            plus.runtime.openWeb('https://apps.ekeji.wang/xcx.html');
            plus.key.addEventListener('backbutton', function() {
                plus.webview.currentWebview().close();
            })
        } else if (id == "gg") {
            var href = 'https://www.baidu.com/';
            var content = plus.webview.create('browse.html', 'browse', {
                scrollIndicator: "none",
                bounce: "vertical",
                statusbar: {
                    background: "#06c1ae"
                },
                titleNView: {
                    autoBackButton: true,
                    backgroundColor: '#06c1ae',
                    titletext: "公告",
                    titleColor: '#ffffff'
                },
                cachemode: 'default'
            }, {
                href: href
            });
            content.addEventListener('loaded', function() {
                content.show('slide-in-right', 300);
            });
            plus.key.addEventListener('backbutton', function() {
                plus.webview.currentWebview().close();
            })
        } else {
            plus.runtime.quit();
        }
    });

    plus.webview.currentWebview().addEventListener("maskClick", function(){
        plus.webview.currentWebview().setStyle({mask:"none"});
        plus.webview.getWebviewById("menu").hide();
    }, false);

    plus.key.addEventListener("backbutton", function() {
        plus.webview.currentWebview().setStyle({mask:"none"});
        plus.webview.getWebviewById("menu").hide();
        return false;
    });

    window.addEventListener('tap', function() {
        plus.webview.getWebviewById("menu").hide();
    });
});

操作步骤:

ios点击首页右上角没效果不出菜单

预期结果:

ios点击首页右上角没效果出菜单

实际结果:

2023年前hbuilderx版本打包代码能正常运行,现在首页-右上角菜单运行不了

bug描述:

wap2app打包的app,app自定义顶部导航,右上角菜单,安卓点击有效果,苹果点击不出来菜单

image1 image2


更多关于onclick在ios18失效而在安卓手机上面正常运行的uni-app问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于onclick在ios18失效而在安卓手机上面正常运行的uni-app问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据描述和代码分析,iOS18上onclick失效的问题可能出在以下几个方面:

  1. iOS18可能对JavaScript注入执行机制做了调整,导致evalJS调用失效。建议改用postMessage方式进行跨页面通信。

  2. 检查iOS18的点击事件处理机制是否有变化。可以尝试改用标准的@click事件绑定方式替代onclick属性。

  3. 字体文件引用问题。iOS18可能对字体文件加载有更严格的限制,确保iconfont.ttf文件路径正确且可访问。

  4. 权限问题。iOS18可能增加了对JavaScript执行的额外权限控制。

建议先尝试以下修改:

  1. onclick中的代码改为:
"onclick": "javascript:plus.webview.postMessageToUniNView({action:'showMenu'});"
  1. 在页面中监听该消息:
plus.webview.addEventListener('showMenu', function(){
    menu();
});
回到顶部