Greasy Fork

Greasy Fork is available in English.

MWIAlchemyCalc

显示炼金收益和产出统计 milkywayidle 银河奶牛放置

< 脚本 MWIAlchemyCalc 的反馈

评价:好评 - 脚本运行良好

§
发布于:2025-06-02

目前安装了插件后不显示炼金收益,刷新后直接选择炼金可以显示,一段时间后又无法显示,F12报错如下:

IOMisaka作者
§
发布于:2025-06-05

是练什么东西的时候呢?还是炼什么东西都报错吗

§
发布于:2025-06-06

是练什么东西的时候呢?还是炼什么东西都报错吗

是的,什么东西都是这样的报错,一般重新安装后刷新可以使用,之后过一段时间就开始报错,此时再次刷新也无法解决。

IOMisaka作者
§
发布于:2025-06-06

有什么修改界面显示的插件之类的吗,这个是直接读取界面上的信息来计算的,像是界面文本格式不对导致的

§
发布于:2025-06-07
编辑于:2025-06-07

有什么修改界面显示的插件之类的吗,这个是直接读取界面上的信息来计算的,像是界面文本格式不对导致的

破案了,应该是跟牛牛UI增强插件有关系,禁用之后暂时没出现问题了。

§
发布于:2025-06-07

还是出现了同样的情况,禁用了一些其他插件也还会出现。

§
发布于:2025-06-07
编辑于:2025-06-07

这是目前安装的插件列表,关闭UI增强后似乎新增了一种报错,在当前炼金完成一次动作后,更新右侧统计数据时出现,但暂未发现统计数据那边有什么错误。

§
发布于:2025-07-14
Uncaught TypeError: can't access property "textContent", costs[(i + 2)] is undefined
    handleAlchemyDetailChanged moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWIAlchemyCalc.user.js?id=c7affe42-ad68-447e-861a-d9e359e93708:422
    handleMessage moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWIAlchemyCalc.user.js?id=c7affe42-ad68-447e-861a-d9e359e93708:58
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWIAlchemyCalc.user.js?id=c7affe42-ad68-447e-861a-d9e359e93708:42
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/[MWI]-Realtime-Import-Of-Battle-Simulation.user.js?id=f9131b5d-948e-4bf4-8941-a4084d2bb2cc:183
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWI-Profit-Panel.user.js?id=f63554d6-f176-4a42-8051-64c70704bb52:3126
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/[银河奶牛]康康运气.user.js?id=f8f0ce3d-d6f7-4a55-8062-cbec0fcddeca:1222
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWI-Equipment-Diff.user.js?id=22239ad4-e8dd-4d3a-8ff7-691e11afcaeb:302
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWI-Hit-Tracker-Canvas.user.js?id=721dd08f-0799-4e47-896e-b85b412c8326:4654
    onmessage https://www.milkywayidle.com/game?characterId=424732 line 228 > injectedScript:2
12 game:422:27

这个报错是因为安装了 银河奶牛放置-辅助增强,其会在页面当中为每种材料注入需求数量的span,导致 costs 变为四个元素为一组,错误位置:

        let costNodes = document.querySelector(".AlchemyPanel_skillActionDetailContainer__o9SsW .SkillActionDetail_itemRequirements__3SPnA");
        if (!costNodes) return;//没有炼金详情就不处理

        let costs = Array.from(costNodes.children);
        //每三个元素取textContent拼接成一个字符串,用空格和/分割
        for (let i = 0; i < costs.length; i += 3) {

            let need = parseNumber(costs[i + 1].textContent);
            let nameArr = costs[i + 2].textContent.split("+");
            let itemHrid = getItemHridByShowName(nameArr[0]);
            let enhancementLevel = nameArr.length > 1 ? parseNumber(nameArr[1]) : 0;

            inputItems.push({ itemHrid: itemHrid, enhancementLevel: enhancementLevel, count: need });
        }

而 costs 会被注入为

<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inventoryCount__tHmPD">1909</span>
<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inputCount__1rdrn">&nbsp;/ 2&nbsp;</span>
<div class="Item_itemContainer__x7kH1">
  <div>
    <div class="Item_item__2De2O Item_clickable__3viV6 Item_inline__3eeJo">
      <div class="Item_iconContainer__5z7j4">
        <svg role="img" aria-label="竹子" class="Icon_icon__2LtL_" width="100%" height="100%">
          <use href="/static/media/items_sprite.6d12eb9d.svg#bamboo_branch"></use>
        </svg>
      </div>
     <div class="Item_name__2C42x">竹子</div>
   </div>
  </div>
</div>
<span>需要:0.0个</span>

<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inventoryCount__tHmPD">5547K</span>
<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inputCount__1rdrn">&nbsp;/ 450&nbsp;</span>
<div class="Item_itemContainer__x7kH1">
  <div>
    <div class="Item_item__2De2O Item_clickable__3viV6 Item_inline__3eeJo">
      <div class="Item_iconContainer__5z7j4">
        <svg role="img" aria-label="金币" class="Icon_icon__2LtL_" width="100%" height="100%">
          <use href="/static/media/items_sprite.6d12eb9d.svg#coin"></use>
        </svg>
      </div>
      <div class="Item_name__2C42x">金币</div>
    </div>
  </div>
</div>
<span>需要:0.0个</span>

把脚本改成相对物品节点寻址可以提高兼容性,把循环替换为:

let itemContainers = costNodes.querySelectorAll(".Item_itemContainer__x7kH1");
itemContainers.forEach(container => {
    // 找到包含“/ 数量”字样的节点(材料需求量)
    let inputCountNode = container.previousElementSibling;
    while (inputCountNode && !inputCountNode.classList.contains("SkillActionDetail_inputCount__1rdrn")) {
        inputCountNode = inputCountNode.previousElementSibling;
    }

    if (!inputCountNode) return; // 跳过无效结构

    let need = parseNumber(inputCountNode.textContent);

    // 获取名称
    let nameNode = container.querySelector(".Item_name__2C42x");
    if (!nameNode) return;

    let nameArr = nameNode.textContent.split("+");
    let itemHrid = getItemHridByShowName(nameArr[0]);
    let enhancementLevel = nameArr.length > 1 ? parseNumber(nameArr[1]) : 0;

    inputItems.push({
        itemHrid: itemHrid,
        enhancementLevel: enhancementLevel,
        count: need
    });
});
IOMisaka作者
§
发布于:2025-07-14

多谢,已更新

Uncaught TypeError: can't access property "textContent", costs[(i + 2)] is undefined
    handleAlchemyDetailChanged moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWIAlchemyCalc.user.js?id=c7affe42-ad68-447e-861a-d9e359e93708:422
    handleMessage moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWIAlchemyCalc.user.js?id=c7affe42-ad68-447e-861a-d9e359e93708:58
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWIAlchemyCalc.user.js?id=c7affe42-ad68-447e-861a-d9e359e93708:42
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/[MWI]-Realtime-Import-Of-Battle-Simulation.user.js?id=f9131b5d-948e-4bf4-8941-a4084d2bb2cc:183
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWI-Profit-Panel.user.js?id=f63554d6-f176-4a42-8051-64c70704bb52:3126
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/[银河奶牛]康康运气.user.js?id=f8f0ce3d-d6f7-4a55-8062-cbec0fcddeca:1222
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWI-Equipment-Diff.user.js?id=22239ad4-e8dd-4d3a-8ff7-691e11afcaeb:302
    hookedGet moz-extension://a5db3abe-275a-444e-b57e-d5ad54111cb0/userscripts/MWI-Hit-Tracker-Canvas.user.js?id=721dd08f-0799-4e47-896e-b85b412c8326:4654
    onmessage https://www.milkywayidle.com/game?characterId=424732 line 228 > injectedScript:2
12 game:422:27

这个报错是因为安装了 银河奶牛放置-辅助增强,其会在页面当中为每种材料注入需求数量的span,导致 costs 变为四个元素为一组,错误位置:

        let costNodes = document.querySelector(".AlchemyPanel_skillActionDetailContainer__o9SsW .SkillActionDetail_itemRequirements__3SPnA");
        if (!costNodes) return;//没有炼金详情就不处理

        let costs = Array.from(costNodes.children);
        //每三个元素取textContent拼接成一个字符串,用空格和/分割
        for (let i = 0; i < costs.length; i += 3) {

            let need = parseNumber(costs[i + 1].textContent);
            let nameArr = costs[i + 2].textContent.split("+");
            let itemHrid = getItemHridByShowName(nameArr[0]);
            let enhancementLevel = nameArr.length > 1 ? parseNumber(nameArr[1]) : 0;

            inputItems.push({ itemHrid: itemHrid, enhancementLevel: enhancementLevel, count: need });
        }

而 costs 会被注入为

<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inventoryCount__tHmPD">1909</span>
<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inputCount__1rdrn">&nbsp;/ 2&nbsp;</span>
<div class="Item_itemContainer__x7kH1">
  <div>
    <div class="Item_item__2De2O Item_clickable__3viV6 Item_inline__3eeJo">
      <div class="Item_iconContainer__5z7j4">
        <svg role="img" aria-label="竹子" class="Icon_icon__2LtL_" width="100%" height="100%">
          <use href="/static/media/items_sprite.6d12eb9d.svg#bamboo_branch"></use>
        </svg>
      </div>
     <div class="Item_name__2C42x">竹子</div>
   </div>
  </div>
</div>
<span>需要:0.0个</span>

<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inventoryCount__tHmPD">5547K</span>
<span class="SkillActionDetail_itemRequirementCell__1F9JM SkillActionDetail_inputCount__1rdrn">&nbsp;/ 450&nbsp;</span>
<div class="Item_itemContainer__x7kH1">
  <div>
    <div class="Item_item__2De2O Item_clickable__3viV6 Item_inline__3eeJo">
      <div class="Item_iconContainer__5z7j4">
        <svg role="img" aria-label="金币" class="Icon_icon__2LtL_" width="100%" height="100%">
          <use href="/static/media/items_sprite.6d12eb9d.svg#coin"></use>
        </svg>
      </div>
      <div class="Item_name__2C42x">金币</div>
    </div>
  </div>
</div>
<span>需要:0.0个</span>

把脚本改成相对物品节点寻址可以提高兼容性,把循环替换为:

let itemContainers = costNodes.querySelectorAll(".Item_itemContainer__x7kH1");
itemContainers.forEach(container => {
    // 找到包含“/ 数量”字样的节点(材料需求量)
    let inputCountNode = container.previousElementSibling;
    while (inputCountNode && !inputCountNode.classList.contains("SkillActionDetail_inputCount__1rdrn")) {
        inputCountNode = inputCountNode.previousElementSibling;
    }

    if (!inputCountNode) return; // 跳过无效结构

    let need = parseNumber(inputCountNode.textContent);

    // 获取名称
    let nameNode = container.querySelector(".Item_name__2C42x");
    if (!nameNode) return;

    let nameArr = nameNode.textContent.split("+");
    let itemHrid = getItemHridByShowName(nameArr[0]);
    let enhancementLevel = nameArr.length > 1 ? parseNumber(nameArr[1]) : 0;

    inputItems.push({
        itemHrid: itemHrid,
        enhancementLevel: enhancementLevel,
        count: need
    });
});

发布留言

登录以发布留言。