如何从页面script标签提取long_name与ID值?尝试getElementsByTagName未果
提取ENV.COURSE下的long_name和ID值的解决方案
直接访问全局对象
既然页面已存在ENV全局对象,无需解析script标签内容,直接在浏览器控制台或代码中调用:// 获取目标值 const courseLongName = ENV.COURSE.long_name; const courseId = ENV.COURSE.ID; // 若实际字段为小写id,替换为ENV.COURSE.id console.log('课程全称:', courseLongName, '课程ID:', courseId);处理ENV未直接暴露的情况
如果ENV无法直接全局访问,不要固定依赖script标签的索引(比如[6],页面结构变化会导致索引失效),可以遍历所有script标签,匹配包含ENV.COURSE的内容:const scripts = document.getElementsByTagName('script'); for (const script of scripts) { const scriptContent = script.innerHTML; if (scriptContent.includes('ENV.COURSE')) { try { // 执行该脚本初始化ENV对象 eval(scriptContent); // 提取目标字段 const targetLongName = ENV.COURSE.long_name; const targetId = ENV.COURSE.ID; console.log('提取结果:', targetLongName, targetId); break; } catch (err) { console.error('解析脚本出错:', err); } } }原方法失败的原因
固定使用document.getElementsByTagName('script')[6]不可靠:页面的script标签数量、顺序可能随页面更新或动态加载改变,导致无法定位到定义ENV的脚本;另外即使拿到脚本内容,也需要解析执行后才能获取ENV对象中的属性值,直接取innerHTML无法得到目标字段的具体值。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

