Replace content in a webpage(Revision)

Replace text content in a webpage(Revision)

< Feedback on Replace content in a webpage(Revision)

Review: OK - script works, but has bugs

ulpyuxaAuthor
§
Posted: 2019-06-06

店小秘的网页不能弹出替换的框

如题,店小秘页面,登录账号后,产品、订单等页面不会弹出输入框,

linmiiAuthor
§
Posted: 2019-06-06

请更新脚本再试一下,因为没有账号,不确定是否修复。不登录账号我试了下,之前确实因为计算高度导致弹框定位到非常下面,看不到弹框内容,只能看到遮罩。

ulpyuxaAuthor
§
Posted: 2019-06-24

@linmii 说道: 请更新脚本再试一下,因为没有账号,不确定是否修复。不登录账号我试了下,之前确实因为计算高度导致弹框定位到非常下面,看不到弹框内容,只能看到遮罩。

弹窗的问题已经可以了,但出现了另外一个问题,就是在店小秘里面,替换时,直接把输入框中的内容全部给替换成空的了。

ulpyuxaAuthor
§
Posted: 2019-06-24

我改良了下, 弹出框的高度小了点,改成150正好。 dialogDiv.style.width = '250px'; dialogDiv.style.height = '150px'; 我因为只需要替换文本框,所以我这边代码就只对文本框进行了处理。以下是我改动的地方。

function replaceContent() { let findText = document.querySelector("#lm-find-content").value; let replaceText = document.querySelector("#lm-replace-content").value; if ("" !== findText && "" !== replaceText) { var list=document.getElementsByTagName("input"); var textCount = list.length; for(var i = 0;i < textCount;i++){ var txt = list[i].value; if(list[i].type=="text" && "" !== txt){ var ret = txt.replace(new RegExp(findText, "gm"), replaceText); console.log(ret); list[i].value=ret } } /let body = document.querySelector("body"); body.innerHTML = body.innerHTML.replace(new RegExp(findText, "gm"), replaceText); // 设置替换前的输入内容 document.querySelector("#lm-find-content").value = findText; document.querySelector("#lm-replace-content").value = replaceText; // 重新绑定替换点击事件 document.querySelector("#lm-replace-btn").addEventListener("click", replaceContent); document.querySelector("#lm-r-modal").addEventListener("click", closeBindEvent); rImgBindEvent();/ } }

body.innerHTML.replace,对文本框不是很友好,好像会把body的结构改掉。所以对文本看能不能进行区别对待。

ulpyuxaAuthor
§
Posted: 2019-06-24

https://photos.app.goo.gl/2hcXo54ngFsTxseh9 稍微改了下,基本已经满足日常需求了。

ulpyuxaAuthor
§
Posted: 2019-06-25

www.1688.com,登录账号后,页面顶部点”我的阿里“->“已买到的货品”页面,会出现有两个R的图片,两个都能点。还有一些其他的登录页面也有这情况。

ulpyuxaAuthor
§
Posted: 2019-06-28

今天又发现一个问题,此功能的弹窗与bootstrap的模态框有冲突,bootstrap的模态框中有个tabindex属性。楼主看能不能解决下。

linmiiAuthor
§
Posted: 2019-08-05

@ulpyuxa 说道: 今天又发现一个问题,此功能的弹窗与bootstrap的模态框有冲突,bootstrap的模态框中有个tabindex属性。楼主看能不能解决下。

模态框有什么冲突?我在bootstrap官网bootstrap官网测试两者互不影响

linmiiAuthor
§
Posted: 2019-08-05

@ulpyuxa 说道: www.1688.com,登录账号后,页面顶部点”我的阿里“->“已买到的货品”页面,会出现有两个R的图片,两个都能点。还有一些其他的登录页面也有这情况。

有多个R图标的情况确实存在,是因为这个页面通用iframde引入了其他的页面,我试过用document.body, document.querySelector("body"), document.getElementsByTagName("body")[0]来设置R图标,但是都一样,每个iframe页面都有自己的body,这个脚本是针对所有网址(*),只要有body的页面就会有一个R图标,这个暂时没想到怎么去处理

ulpyuxaAuthor
§
Posted: 2019-09-25

@linmii 说道:

@ulpyuxa 说道: 今天又发现一个问题,此功能的弹窗与bootstrap的模态框有冲突,bootstrap的模态框中有个tabindex属性。楼主看能不能解决下。

模态框有什么冲突?我在bootstrap官网bootstrap官网测试两者互不影响

在官网上面能弹出替换的框,但是是不能输入查找和替换中输入。

linmiiAuthor
§
Posted: 2019-10-09

@ulpyuxa 说道:

@linmii 说道:

@ulpyuxa 说道: 今天又发现一个问题,此功能的弹窗与bootstrap的模态框有冲突,bootstrap的模态框中有个tabindex属性。楼主看能不能解决下。

模态框有什么冲突?我在bootstrap官网bootstrap官网测试两者互不影响

在官网上面能弹出替换的框,但是是不能输入查找和替换中输入。

能具体说明下吗?或者发个图?我在官网试了能输入并且替换成功了,图片一直上传失败了

ulpyuxaAuthor
§
Posted: 2019-12-31
Edited: 2019-12-31

我现在用你的代码改进了一下,修复了好几个问题,用我修改后的代码运行比较正常,没有再出现多个R图标。已经解决的bug如下:

  • 2019-08-05 更新内容
  • 1. 解决有bootstrap模态框弹出页面无法输入的问题。
  • 2. 增加是否替换禁用文本框内容的功能
  • 3. 修改为只替换文本框内容的功能,不替换其他区域的内容。 *
  • 2019-12-31 更新内容
  • 1. 解决一个页面出现多个替换图标的问题。如163邮箱里面
  • 2. 解决在某些网页,弹窗飘到屏幕顶部无法输入的问题,如1688网站订单页面。

大神如果同意的话,我可以放到论坛里面去,目前这份代码我没有进行共享。 或者大神需要的话,可以发给大神进行发布。 或者就我一个人用也行。 :D :D

linmiiAuthor
§
Posted: 2020-01-15
Edited: 2020-01-15

你只有论坛的账号吗?没有Greasyfork账号?(用你的用户名没有搜索到)你可以注册一个Greasyfork账号,我把添加添加到脚本作者里面。 或者你给我发布也可以

ulpyuxaAuthor
§
Posted: 2020-01-19

大神,我已经发布了,非公开脚本,版权属于你,我就不发不公开版了,链接在这里:https://greasyfork.org/zh-CN/scripts/395434-%E6%9B%BF%E6%8D%A2%E7%BD%91%E9%A1%B5%E4%B8%AD%E7%9A%84%E5%86%85%E5%AE%B9-%E6%94%B9

Post reply

Sign in to post a reply.