• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Umwandlung .htm links in .aspx links

mle1988

New member
Hallo,

ich generiere automatisch htm Seiten via einem Übersetzungtool. Leider sind in dem Footerbereich, Verweise auf andere .htm Seiten. Ich möchte jedoch das die links im Footer auf gleichnamige .aspx Seiten verweisen. Nun frage ich mich wie ich das per Javascript am besten umsetze, da ich in diesem Übersetzungtool, Bereiche nach dem Bodytag definieren kann (bspw. JS oder ähnliches). Habt ihr eine Idee? Ausgangslink ist bspw. abc.htm. Nun möchte ich das der Link auf abc.aspx automatisch geändert wird.

Vielen Dank
 
Du könntest das auch ohne Javascript machen. Einfach die vom Tool generierten Seiten mit dem Editor oder Notepad++ öffnen und dort auf "Suchen und Ersetzen" gehen. Bei "suchen nach" gibst du .htm ein und bei "ersetzen mit" .aspx.

Sollte das zuviel Arbeit sein, kannst du mit jquery alle A-Tags im Dokument filtern und schauen ob href ein .htm hat.
In diesem Fall liest du dir mit split(.) den Teil vor dem Punkt aus und ergenzt den String .aspx.
Das ganze dann an location.href übergeben.

- - - Aktualisiert - - -

Wenn du das nur für den Footer willst, wäre es das beste, den Footer-Links eine eigene Klasse zu geben, dann kannst du jquery direkt nach Links mit dieser Klasse selektieren lassen.

Allerdings müßtest du dazu eh die generierten Files manuell bearbeiten, insofern wären wir wieder bei Lösung 1.
 
Zuletzt bearbeitet:
Du musst bloß das umschließende Footer-Element über seinen Namen, ID, Tag, etc. ansprechen; anschließend kannst du durch die darin enthaltenen Links loopen:
Code:
//var footer = Footer-Element;
var links = footer.getElementsByTagName("a");
for(var x = 0; x < links.length; x++){
  if(links[x].hasAttribute("href")){
    var newLink = links[x].href.substring(0, links[x].href.lastIndexOf(".")) + "aspx";
    links[x].href = newLink;
  }
}

Aber ansonsten schließe ich mich dbarthel an - was ist, wenn JavaScript deaktiviert ist? Dann sind sämtliche Links kaputt...
 
Zuletzt bearbeitet:
das .lastIndexOf() kann auch nach hinten los gehen, wenn da mal ein Link ist, der nicht auf eine Datei zeigt. Dann würde nämlich der Punkt vor der TLD genommen werden und die TLD zu .aspx geändert werden.

Ich würde da ein .replace(/\.html?($|\?)/, ".aspx") machen.
 
Obwohl ich mir nicht sicher bin inwieweit das ganze so überhaupt sinnvoll ist.
Es besteht ja ein Unterschied zwischen einer aspx- und einer html-datei, der über die Dateiendung hinaus geht, insofern könnte da ein reines umbenennen, ggf. nicht unbedingt ziehlfuehrend sein.
 
Zuletzt bearbeitet:
das .lastIndexOf() kann auch nach hinten los gehen, wenn da mal ein Link ist, der nicht auf eine Datei zeigt.
Stimmt, du hast mal wieder recht :D Ich hab mich übrigens letztens mal näher mit RegExp beschäftigt (wollte ich schon länger, weil ich die nie so ganz kapiert hatte - mich aber ehrlich gesagt auch nicht sehr darum gekümmert habe), und mittlerweile durchschau ich's schon ganz gut...

- - - Aktualisiert - - -

Es besteht ja rin Unterschied zwischen einer aspx- und einer html-datei, der über die Dateiendung hinaus geht
Oh doch: ASP.NET :beaten:
 

verstehe jetzt nicht ganz, was du meinst.

Eine Aspx sieht so aus:

Code:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="ASP.NET_Beispiel._Default" %>
 
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <source lang="XML">
    <h2>
        Welcome to ASP.NET!
    </h2>
    <p>
        To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>
  </source>
</asp:Content>

und eine html so:

Code:
<!DOCTYPE html>
<!--[if lt IE 7]> 
<html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> 
<![endif]-->
<!--[if IE 7]>
<html class="no-js lt-ie9 lt-ie8" lang="en">
<![endif]-->
<!--[if IE 8]> 
<html class="no-js lt-ie9" lang="en">
<![endif]-->
<!--[if gt IE 8]>
<!-->
<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" lang="en" xml:lang="en">
<!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="./Main-Theme/css/job-fit.css" />
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>
JobFit
</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" href="./Main-Theme/css/smallscreen.css" />
<!--[if lt IE 9]>
<link href="./Main-Theme/css/fullscreen.css" rel="stylesheet" type="text/css">
<![endif]-->
<link href="./Main-Theme/css/fullscreen.css" rel="stylesheet" type="text/css" media="only screen and (min-width: 993px)" />
<link rel="stylesheet" type="text/css" href="./Main-Theme/css/expandcollapse.css" media="screen" />
<script src="./Main-Theme/js/modernizr.custom.73407.js"></script>
<script type="text/javascript" src="/Main-Theme/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="./Main-Theme/js/response.min.js"></script>
<script type="text/javascript" src="./Main-Theme/js/rwd.js"></script>
<script type="text/javascript" src="/Main-Theme/js/jquery.main.js"></script>
<!--[if IE]>
<script type="text/javascript" src="./Main-Theme/js/ie.js"></script>
<![endif]-->
<script type="text/javascript" src="/Main-Theme/js/job-fit.js"></script>
<script type="text/javascript" src="./Main-Theme/js/expandcollapse.js"></script>
</head>
<body class="template-document_view_job_fit portaltype-agencypage site section-careers icons-on">
<div>
 <noscript>Javascript must be enabled for the correct page display</noscript>
 <div id="wrapper">
  <header id="header">
   <div class="header-holder">
    <a class="skip" accesskey="S" href="#main-content">zum Inhalt</a>
    <span class="bg-globe"></span>
    <div class="header-panel">
    <hgroup>
  

[...] usw.

wenn ich jetzt letzteres html-dokument in aspx umbenenne, wird daraus ja nicht automatisch der Code von oben.

Eine ASPX kann zwar auch normalen HTML-Code enthalten aber wenn ich schon eine HTML-Datei habe, warum diese dann umbennen?
 
Zuletzt bearbeitet:
Zurück
Oben