这是我的代码:

 function insert(){
  var loc_array = document.location.href.split('/');
  var linkElement = document.getElementById("waBackButton");
  var linkElementLink = document.getElementById("waBackButtonlnk");
  linkElement.innerHTML=loc_array[loc_array.length-2];
  linkElementLink.href = loc_array[loc_array.length];
 }

我希望linkElementLink.href能够捕获数组中除最后一项以外的所有内容。现在,它已损坏,并且它之前的那个项目倒数第二个。

最佳答案

优先于pathname使用href来仅检索链接的路径部分。否则,如果后缀为?query#fragment,或者路径为/(无父级),则会得到意外的结果。

linkElementLink.href= location.pathname.split('/').slice(0, -1).join('/');

(但是,那么您肯定可以说:)
linkElementLink.href= '.';

不要这样做:
linkElement.innerHTML=loc_array[loc_array.length-2];

从任意字符串设置HTML是危险的。如果您从中获取此文本的URL包含HTML中特殊的字符(例如<&),则用户可以注入(inject)标记。如果您可以在URL中获得<script>(由于无效,您不应该这样做),但是无论如何,某些浏览器都可能允许您这样做),您将遇到跨站点脚本的安全漏洞。

要设置元素的文本(而不是HTML),请使用document.createTextNode('string')并将其附加到元素上,或者使用分支代码使用innerText(IE)或textContent(其他现代浏览器)。

关于javascript - JavaScript-获取数组中除最后一项外的所有项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3214409/

10-12 06:40