gpt4 book ai didi

javascript - 如何访问远程加载的 "<script>"元素的文本?

转载 作者:行者123 更新时间:2023-11-28 11:00:07 25 4
gpt4 key购买 nike

我目前正在尝试使用greasemonkey(更准确地说是js/jquery)为onemanga编写一个支持ajax的漫画阅读器应用程序

我的问题是我需要在其页面上执行一个内联脚本来更新下一页网址。所以我尝试的是以下内容:

$.get(nextPage,function(nxtHtm) // the variable nextPage already contains required url
{
nxtImgUrl = $(nxtHtm).find(".one-page img").attr("src"); // get next image url
$("body").append("<img id='dynamic' src='"+nxtImgUrl+"'/>"); // append next image
$(nxtHtm).find("script:last-1").appendTo("body"); // attempt to append script to body
alert(nextPage); // testing if script to change page url has been executed
});

然而,这似乎只适用于图像部分。该脚本没有任何效果。我也尝试做一个 警报($(nxtHtm).find(“脚本:last-1”).html());以及 .text() 或 .值().html() 不返回任何内容(不是“null”,它只是警告空白值),另外两个返回 null 或 undefined

有人知道如何在此处附加远程脚本吗?或者捕获标签之间的文本并仅对其进行 eval() ?

谢谢^^

最佳答案

JQuery 可能会以性能的名义忽略某些元素的内容(例如 <head> )。我怀疑<script>就是其中之一。

解决方案是阻止 JQuery 解析 DOM,直到您有机会覆盖该行为。

  1. 使用 converters 覆盖 JQuery 默认解析行为 block
  2. 替换任意 <script>标签为 <div data-tag="script">这样他们就不会被忽视
  3. 查找text()适当的部门。

尝试这样的事情:

$.ajax(nextPage,{
success: function( data, status, xhr ){
data = data.replace(/\<script[^>]+\>/ig,"<div data-script='true'>")
data = data.replace("</script>","</div>")
var $data = $(data);
nxtImgUrl = $data.find(".one-page img").attr("src");
$("body").append("<img id='dynamic' src='"+nxtImgUrl+"'/>");
$data.find("div[data-script=true]:last-1").text().appendTo("body");
alert(nextPage);
},
converters:{
"* text": window.String,
"text html": true,
"text xml": true
},
dataType:'html'
});

您可能会因 & 等无效实体而遇到编码问题。 ,在这种情况下,您可能需要基于正则表达式的方法,这也是可能的。让我知道你的进展如何。

关于javascript - 如何访问远程加载的 "&lt;script&gt;"元素的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com