Ulrich Seniormester
22. oktober 2017 - 20:49 Der er 11 kommentarer og
1 løsning

iframe tilpasse height efter indhold.

Har en side, nyheder.asp som indeholder nyheder. Den er dynamisk, dvs der er mellem 1 og 20 linjer (nyheder) skiftende hver dag.

nyheder.asp side vise på en anden side info.asp i en iframe.
<iframe frameborder="0" src="nyheder.asp" width="400"></iframe>

For ikke at have fast højde på iframe på info.asp siden, så der kan opstå scroll bar, vil jeg gerne have at højde sættes automatisk efter indhold på nyheder.asp siden.

info.asp siden foretager auto update hver 10 minut.
De to sider ligger på hver sit domæne, men hvis det er nemmere, kan de godt være på samme domæne.
Slater Ekspert
22. oktober 2017 - 20:57 #1
Det kan du ikke. En iframe kan ikke have højde efter indholdet, i hvert fald ikke uden noget kompliceret script, som har det med at gå i stykker responsivt eller ved klient-zoom alligevel.

Jeg vil anbefale dig helt at skrotte iframes, og sætte indholdet ind med Javascript i stedet. Det fungerer meget bedre, og højden kan sættes helt dynamisk. Dog skal du så huske, at CSS på modtagersiden pludselig har effekt på den inkluderede side, modsat før.
cht22 Professor
22. oktober 2017 - 21:02 #2
Så tror jeg ikke det er iframe du skal bruge. Måske kan div med id bruges:

og så kan du bruge java script:

document.getElementById("text").innerHTML = "dine nyheder";

Du kan godt undgå scrolbar på iframe, men det er nok ikke det du vil.

https://www.w3schools.com/tags/att_iframe_scrolling.asp

Eller også skal du finde en helt tredje mulighed.
Ulrich Seniormester
22. oktober 2017 - 21:48 #3
Det er en info skærm, så der er ikke bruger input der zoomer eller andet, der er auto update på som det eneste.

Jeg dropper iframe.
Er der nogen der kan hjælpe med JS eller Jq kode for de to sider?
nyheder.asp som indeholder linjer fra 1 til fx 20 og som skal vises i felt på anden side.
info.asp som i et felt skal vise indholdet af nyheder.asp.
cht22 Professor
23. oktober 2017 - 07:16 #4
Det kan gøres med ajax således:

Indsæt dette mellem <head> og </head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  setInterval(function(){
        $.get("nyheder.asp", function(data, status){
            document.getElementById("nyheder").innerHTML = data;
        });
    }, 300000);
});
</script>


Her er tiden der skal gå mellem at der nyhederne hentes sat til 5 minutter. Du kan evt. ændre det ved at ændre de 300000 millisekunder.

Dette indsætte imellem <body> og </body>

<div id=nyheder>Visning af nyheder</div>
cht22 Professor
23. oktober 2017 - 11:43 #5
Der skal nok lige ændres lidt ellers henter den først nyhederne efter 5 minutter
cht22 Professor
23. oktober 2017 - 12:47 #6
Det kan gøres sådan her:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$.get("nyheder.php", function(data, status){
  document.getElementById("nyheder").innerHTML = data;
});
$(document).ready(function(){
  setInterval(function(){
        $.get("nyheder.php", function(data, status){
            document.getElementById("nyheder").innerHTML = data;
        });
    }, 300000);
});
</script>
</head>
<body>
<div id=nyheder>Visning af nyheder</div>
</body>
</html>
cht22 Professor
23. oktober 2017 - 13:58 #7
Det bør være sådan her (så er der taget højde for hvis siden er længere tid om at loade:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $.get("nyheder.php", function(data, status){
    document.getElementById("nyheder").innerHTML = data;
  });
});
$(document).ready(function(){
  setInterval(function(){
        $.get("nyheder.php", function(data, status){
            document.getElementById("nyheder").innerHTML = data;
        });
    }, 300000);
});
</script>
</head>
<body>
<div id=nyheder>Visning af nyheder</div>
</body>
</html>

Navnet på siden nyheder.php skal du selvfølgelig ændre til nyheder.asp hvis det er det siden du henter fra hedder.
Ulrich Seniormester
23. oktober 2017 - 18:51 #8
HELT FANTASTISK !!

Det virker tak for det.
Har dog et spørgsmål mere?
Hvis det er en side på et andet domæne, kan det så lade sig gøre?
Slater Ekspert
23. oktober 2017 - 19:57 #9
Ja, men det kræver at den ressource du henter data fra har en CORS-header.

Er det dit eget domæne?
Ulrich Seniormester
23. oktober 2017 - 20:14 #10
Ja begge er mit eget - altså ikke noget jeg selv host'er.
De ligger ved www.unoeuro.com/ begge.
Ulrich Seniormester
26. oktober 2017 - 20:29 #11
Slater, kan jeg gøre noget for at få det til at virke på to domæner?
Ulrich Seniormester
26. oktober 2017 - 23:39 #12
Jeg kører det på samme domæne, så virker det.
Et andet spørgsmål som jeg vil høre om i ved svar på.
Jeg bruger følgende:
http://www.dynamicdrive.com/dynamicindex2/cmarquee2.htm
og i 'Step 2' har jeg følgende:
<!--YOUR SCROLL CONTENT HERE-->
<div id=nyheder></div>
<!--YOUR SCROLL CONTENT HERE-->

Det virker faktisk, bortset fra at når tekst ruller helt i top starter den forfra, dvs den kommer aldrig til at vise det nederste tekst.
Hvis der er fx 10 linjer og der er plads til 5, ruller den op til toppen og 5 er synlige, så clear den feltet og starter den forfra i bunder igen.
Lidt som om det kun er Chrome og ikke i Explore.

Nogen der ved hvorfor?
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Test: Kæmpestort gaming-headset er perfekt til dine lange Teams-møder - men har også nogle besværligheder
Længe før vi andre blev slået hjem til hjemmekontorets endeløse webmøder har gamerne gennemskuet behovet for komfortabelt grej. Så vi tog danske EPOS top gamingheadset med på arbejde. Læs testen her.
Computerworld
Biden sender skjult besked til kode-folket: "Hvis du læser dette, har vi brug for din hjælp”
En stående invitation er blevet opdaget i kildekoden på Det Hvide Hus' hjemmeside. Men den er kun til de eksperter, der selv kan finde den.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
White paper
Ryk SAP-workloads i skyen – og tag alle de kendte fordele med
SAP-kunder verden over har gennem de seneste 15 år draget fordel af løsninger baseret på NetApps ONTAP-data management-platform. Herunder en mere sikker og stabil drift samt forenklet administration, hvilket er afgørende for at gennemføre projekter effektivt og for at reducere deres risikoprofil. Gennem de seneste år er det i høj grad også blevet muligt at rykke SAP-workloads i skyen, og det ønsker mange virksomheder rimeligvis at drage fordel af – men uden at sige farvel til mulighederne med NetApp ONTAP. I dette whitepaper stiller vi skarpt på mulighederne for at indarbejde NetApp Cloud Volumes ONTAP and Azure NetApp Files som del af en SAP-strategi baseret på Microsoft Azure.