HTML中Href含引号导致书签代码截断,无法修改JS求解决方案
问题解决:HTML href引号嵌套导致代码截断
你的问题根源是引号嵌套冲突:<a>标签的href属性用双引号包裹JavaScript代码,但代码内部的querySelector("link[rel*='icon']")又使用了双引号,浏览器会误将这个内部双引号识别为href属性的结束符,导致后续代码被截断,只显示到querySelector(部分。
修正方案
你需要将JavaScript代码内部的双引号转义为HTML实体",这样浏览器就不会提前终止href属性的解析。修正后的完整代码如下:
<a href="javascript:function gcloak() { var link = document.querySelector("link[rel*='icon']") || document.createElement('link');link.type = 'image/x-icon';link.rel = 'shortcut icon';link.href = 'https://ssl.gstatic.com/docs/doclist/images/infinite_arrow_favicon_5.ico';document.title = 'My Drive - Google Drive';console.log(document.title);document.getElementsByTagName('head')[0].appendChild(link) };gcloak();setInterval(gcloak, 1000);">Google Drive Disguise</a>
另一种可选方案
如果你不想转义双引号,也可以将href属性的包裹符换成单引号,同时把代码内部的单引号转义为',代码如下:
<a href='javascript:function gcloak() { var link = document.querySelector("link[rel*='icon']") || document.createElement('link');link.type = 'image/x-icon';link.rel = 'shortcut icon';link.href = 'https://ssl.gstatic.com/docs/doclist/images/infinite_arrow_favicon_5.ico';document.title = 'My Drive - Google Drive';console.log(document.title);document.getElementsByTagName('head')[0].appendChild(link) };gcloak();setInterval(gcloak, 1000);'>Google Drive Disguise</a>
两种方案都能解决截断问题,你可以选择更贴合原始代码结构的第一种方案,直接转义内部双引号即可。
内容的提问来源于stack exchange,提问作者user20393634
相关产品推荐
相关产品推荐

