Greasy Fork is available in English.
显示炼金收益和产出统计 milkywayidle 银河奶牛放置
是练什么东西的时候呢?还是炼什么东西都报错吗
是练什么东西的时候呢?还是炼什么东西都报错吗
是的,什么东西都是这样的报错,一般重新安装后刷新可以使用,之后过一段时间就开始报错,此时再次刷新也无法解决。
有什么修改界面显示的插件之类的吗,这个是直接读取界面上的信息来计算的,像是界面文本格式不对导致的
有什么修改界面显示的插件之类的吗,这个是直接读取界面上的信息来计算的,像是界面文本格式不对导致的
破案了,应该是跟牛牛UI增强插件有关系,禁用之后暂时没出现问题了。
还是出现了同样的情况,禁用了一些其他插件也还会出现。
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"> / 2 </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"> / 450 </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
});
});
多谢,已更新
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"> / 2 </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"> / 450 </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 }); });
目前安装了插件后不显示炼金收益,刷新后直接选择炼金可以显示,一段时间后又无法显示,F12报错如下: