JavaScript – Získejte všechny položky kromě poslední v poli

Toto je můj kód:

 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];
 }

Chci linkElementLink.href zachytit vše kromě poslední položky v poli. Právě teď je rozbitá a předmět, než dostane předposlední předmět.

Odpověď

Použijte pathname přednostně před href načíst pouze část cesty odkazu. V opačném případě získáte neočekávané výsledky, pokud existuje ?query nebo #fragment přípona nebo cesta je / (žádný rodič).

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

(Ale pak byste jistě mohli říct:)

linkElementLink.href= '.';

Nedělejte to:

linkElement.innerHTML=loc_array[loc_array.length-2];

Nastavení HTML z libovolného řetězce je nebezpečné. Pokud adresa URL, ze které jste převzali tento text, obsahuje znaky, které jsou v HTML speciální, například < a & , mohli uživatelé vložit značky. Pokud byste mohli získat <script> v adrese URL (což byste neměli mít, protože je neplatná, ale některý prohlížeč vám to stejně může umožnit) byste měli bezpečnostní díry v oblasti skriptování mezi weby.

Chcete-li nastavit text prvku namísto HTML, použijte buď document.createTextNode('string') a připojte jej k prvku nebo kódu větve pro použití innerText (IE) nebo textContent (jiné moderní prohlížeče).