开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 273|回复: 4
收起左侧

[已解决] 本地HTML文件含有JavaScript代码 怎么调用

 关闭 [复制链接]
结帖率:100% (2/2)
发表于 前天 04:26 | 显示全部楼层 |阅读模式   广东省汕头市
50精币
本地HTML文件含有JavaScript代码  怎么调用html里的api接口 才能正常返回
HTML文件代码:(网页地址:http://127.0.0.1:80/plugin.html)
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>我的插件</title>
    <script>
        // 核心功能库
        const Core = {
            // 输出日志
            outputLog: function(port, pluginName, text) {
                const url = `http://127.0.0.1:${port}/output`;
                const params = new URLSearchParams({
                    name: pluginName,
                    text: text
                });
                fetch(url + '?' + params.toString());
            },

            // 发送群消息
            sendGroupMessage: function(port, pluginName, msg, group, qq) {
                const url = `http://127.0.0.1:${port}/sendgroup`;
                const params = new URLSearchParams({
                    name: pluginName,
                    msg: msg,
                    group: group,
                    qq: qq
                });
                fetch(url + '?' + params.toString());
            },

            // 获取消息详情
            getMessage: function(port, msgid) {
                return new Promise((resolve, reject) => {
                    const url = `http://127.0.0.1:${port}/getmsg?msgid=${msgid}`;
                    fetch(url)
                        .then(response => response.json())
                        .then(data => resolve(data))
                        .catch(error => reject(error));
                });
            },

            // HTTP GET请求(带参数)
            httpGet: function(url, params) {
                return new Promise((resolve, reject) => {
                    try {
                        const paramObj = JSON.parse(params);
                        const query = new URLSearchParams(paramObj).toString();
                        fetch(`${url}?${query}`)
                            .then(response => response.text())
                            .then(data => resolve(data))
                            .catch(error => reject(error));
                    } catch (e) {
                        reject("参数解析错误");
                    }
                });
            },

            // 解析JSON
            parseJson: function(jsonText) {
                try {
                    return JSON.parse(jsonText);
                } catch (e) {
                    return null;
                }
            },

            // 从JSON对象获取文本
            getJsonText: function(jsonObj, path) {
                const keys = path.split('.');
                let value = jsonObj;
                for (const key of keys) {
                    if (value && typeof value === 'object' && key in value) {
                        value = value[key];
                    } else {
                        return "";
                    }
                }
                return value || "";
            },

            // 从JSON对象获取整数
            getJsonNumber: function(jsonObj, path) {
                const value = this.getJsonText(jsonObj, path);
                return isNaN(Number(value)) ? 0 : Number(value);
            },

            // 从JSON对象获取布尔值
            getJsonBoolean: function(jsonObj, path) {
                const value = this.getJsonText(jsonObj, path);
                return value === true || value === "true";
            },

            // 取左边字符
            leftText: function(str, length) {
                try {
                    return str.substring(0, parseInt(length));
                } catch (e) {
                    return "";
                }
            },

            // 取右边字符
            rightText: function(str, length) {
                try {
                    return str.substring(str.length - parseInt(length));
                } catch (e) {
                    return "";
                }
            },

            // 取中间文本
            midText: function(str, start, end) {
                try {
                    return str.substring(parseInt(start), parseInt(end));
                } catch (e) {
                    return "";
                }
            },

            // 文本替换
            textReplace: function(str, from, to) {
                try {
                    return str.split(from).join(to);
                } catch (e) {
                    return str;
                }
            }
        };
    </script>
    <script>
        // 插件信息
        const pluginInfo = {
            name: "我的插件",
            author: "开发者",
            version: "1.0.0",
            description: "由Blockly生成的插件"
        };

        // 分布式处理函数
        function handlePluginInfoRequest() {
            // 返回插件信息
            return JSON.stringify(pluginInfo);
        }

        function handleGroupMessage(port, msgid) {
            return new Promise((resolve) => {
                // 获取消息详情
                Core.getMessage(port, msgid).then(data => {
                    // 自动解析消息参数为变量
                    const bot = data.bot;     // 机qi人QQ
                    const msg = data.msg;     // 消息内容
                    const group = data.group;  // 群号
                    const sender = data.sender; // 发送者QQ
                    const req = data.req;      // 请求类型
                    const random = data.random; // 随机数

                    // 用户逻辑开始
                    try {

                        resolve("消息处理完成");
                    } catch (e) {
                        resolve("消息处理出错: " + e);
                    }
                    // 用户逻辑结束

                }).catch(error => {
                    Core.outputLog(port, pluginInfo.name, "获取消息失败: " + error);
                    resolve("获取消息失败");
                });
            });
        }

        // 主函数
        function main() {
            const params = new URLSearchParams(window.location.search);
            const type = params.get('type');
            const port = params.get('port');
            const msgid = params.get('msgid');

            // 分布式处理请求
            if (type === '0') {
                // 处理插件信息请求
                const result = handlePluginInfoRequest();
                document.write(result);
            } else if (type === '1' && msgid) {
                // 处理群消息
                handleGroupMessage(port, msgid).then(result => {
                    // 可选:返回处理结果
                    // document.write(result);
                });
            }
        }

        // 启动
        main();
    </script>
</head>
<body>
</body>
</html>

比如说 我想要调用:http://127.0.0.1:80/plugin.html?type=0
使其正常返回指定json

最佳答案

查看完整内容

请求接口:http://127.0.0.1:8081/plugin?type=0 返回 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:71% (5/7)

签到天数: 1 天

发表于 前天 04:26 | 显示全部楼层   四川省遂宁市
[JavaScript] 纯文本查看 复制代码
const express = require('express');
const app = express();

const plugin = require('./plugin');



app.get('/plugin', async function (req, res) {
    if(req.query.type == '0'){
        res.send(plugin.handlePluginInfoRequest());
    }
});



app.listen(8081, () => {
    console.log('服务端口 8081');
});



请求接口:http://127.0.0.1:8081/plugin?type=0
返回信息:{"name":"我的插件","author":"开发者","version":"1.0.0","description":"由Blockly生成的插件"}

安装node环境

新建个index.js 代码复制进去

npm i express

然后 node index.js 运行 就能访问了。

补充内容 (2025-5-31 12:36):
plugin.js 文件 是你的插件文件,index就 开启服务器然后调用插件的函数 的作用!

module.exports = { handlePluginInfoRequest, handleGroupMessage }; 结尾导出所有函数
回复

使用道具 举报

结帖率:87% (20/23)

签到天数: 1 天

发表于 前天 09:40 | 显示全部楼层   内蒙古自治区通辽市
用node,就可以跑
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 2 天

 楼主| 发表于 前天 10:11 | 显示全部楼层   广东省汕头市

大佬有没有具体实现例子
回复

使用道具 举报

结帖率:87% (20/23)

签到天数: 1 天

发表于 前天 12:05 | 显示全部楼层   内蒙古自治区通辽市
apengtongxue 发表于 2025-5-31 10:11
大佬有没有具体实现例子

小问题精币可以解决。这种问题,精币不行了。我qq在下面加我细聊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表