Avatar billede svjensen Nybegynder
09. oktober 2003 - 22:50 Der er 31 kommentarer og
1 løsning

Visning af nyhed i popup vindue

På min nyhedsside viser jeg en teaser for hver nyhed, og vha. følgende link åbnes popupvinduet:

<a href="java script:void(0);" onclick="PopupNews('<%= overskrift %>', '<%= dato %>', '<%= forfatter %>', '<%= email %>', '<%= streng %>', '<%= billede %>');return false;">Læs mere >></a></td></tr>

Min function ser således ud:

<script language="JavaScript" type="text/javascript">
function PopupNews(overskrift, dato, forfatter, email, tekst, billede){
    h=500;
    w=250;
    winTop=(screen.height-h)/2;
    winLeft=(screen.width-w)/2;
    newWin=window.open("","Nyhed","height="+h+",width="+w+",top="+winTop+",left="+winLeft+",scrollbars=no,status=no");
    newWin.document.writeln('<ht'+'ml>');
    newWin.document.writeln('<he'+'ad>');
    newWin.document.writeln('<ti'+'tle>'+overskrift+'<\57tit'+'le>');
    newWin.document.writeln('<link rel="stylesheet" type="text/css" href="css/bball.css">');
    newWin.document.writeln('<\57he'+'ad>');
    newWin.document.writeln('<bo'+'dy style="border:0px;margin:0px">');
    newWin.document.writeln('<table width="100%"><th colspan=2>'+overskrift+'</th></tr>');
    newWin.document.writeln('<tr><td colspan=2>'+tekst+'</td></tr>');
    newWin.document.writeln('<tr><td>&nbsp;</td>');
    newWin.document.writeln('<tr><td valign=bottom class=TDRight>Skrevet af <a href="mailto:'+email+'">'+forfatter+'<br>'+dato+'</td>');
    newWin.document.writeln('<td><img src="'+billede+'></td></tr>');
    newWin.document.writeln('</table>');
    newWin.document.writeln('<br><a href="java script:window.close();">Luk vinduet<\57a>');
    newWin.document.writeln('<\57ce'+'nter><\57b'+'ody><\57ht'+'ml>');
    newWin.document.close();
    }
</script>

Mit problem er variablen 'streng'. I visse tilfælde vil vinduet ikke loade, og jeg har en mistanke om, at det sker hvis der er linieskift i teksten. Hvordan kan jeg komme uden om det?
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 22:54 #1
du bruger jo allerede asp: PopupNews('<%= overskrift %>'
brug det hele vejen..

når du arbejder med javascript kan du bruge "" og ''..
hvis 'tekst' indholder tegnet ' vil din koden blive afsluttet alt for tidligt, hvilket skaber kaos.
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:00 #2
Jeg har ikke de store erfaringer med at kreere popup vinduer, og den erfaring jeg har er med javascript. Kan jeg gøre præcis det samme i asp?
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:03 #3
Jeg kan godt se at jeg uden de store problemer kan skrive de enkelte linier vha. response.write. Men hvad med window.open close?
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:04 #4
du kan ikke lave popups med asp, da asp kode afvikles på serveren, hvor javascript kode afvikles i browseren..

men du henter jo noget info (sikkert fra en database) og smider det ind i javascript, som så åbnes en popup med indholder.. der er hentet via asp :)

for at gøre det simpelt:
du har news.asp som henter info (f.eks. fra en database) fra din kilde og smider det ind i selve vinduet..

du bruger bare window.open('news.asp', 'vinduenavn');
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:06 #5
hvs det var en restaurant, ville dit script (tjeneren) gøre noget der ligner det her:

løb ud i køkkenet, tag en tallerken, gå over til bordet med tallerknen, gå til bage til køkkenet, tag maden, gå ud til bordet.

( sikkert et dårligt eksempel som ikke engang passer.. men, hey..:) )
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:07 #6
Kan du uddybe eksemplet lidt mere?
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:07 #7
altså det første ;-)
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:08 #8
ok.. hang on..
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:08 #9
bruger du en database? hvis ja, hvilen (mysql, access, osv) ?
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:11 #10
Jeg henter nyhederne fra en mysql tabel 'news' som indeholder felterne 'newsid', 'dato', 'author', 'authoremail', 'overskrift', 'tekst', 'godkendt', 'medlemsnr'

Nyhederne hentes ind i news.asp, hvor de overskriften, forfatteren, datoen og de første 150 karakterer af nyheden vises. Efter nyheden er det link jeg beskrev øverst.
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:13 #11
perfekt, og hvad er det så lige at du vil bruge javascript til?
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:16 #12
Min ide er som jeg nævnte indledningsvis, at der kun vises en teaser (fx de første 150 karaterer) af nyheden, og brugeren ved at klikke på linket efter teaseren får præsenteret hele nyheden i et popup vindue.
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:19 #13
Og som nævnt har jeg kun prøvet at lave popup vinduer vha. javascript. Jeg kender derfor ikke til dit eksempel med window.open('news.asp', 'vinduenavn');

Men jeg vil meget gerne vide lidt om hvordan jeg bruger det.
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:29 #14
hmm underligt.. du henter nyheden og begrænser den til de første 150 tegn..
så laver du et link (der indeholder en masse info) der åbner en popup for at se resten af nyheden?

hvorfor ikke bare hente id'en og laver en url:
<a href="news.asp?id=<%=rs("id")%>">Læs hele nyheden</a>

og på news.asp:
dim newsid
newsid = request.querystring("id")

strSQL = "select... where id='" & newsid & "'...."
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:31 #15
rettelse:
<a href="news.asp?id=<%=rs("id")%>" target="x">Læs hele nyheden</a>

hvor x enten er "_blank" eller f.eks. "news"
"_blank": åbner et nyt vindue hver eneste gang linket klikkes..
"news": der åbnes et vindue kaldet "news", og denne åbnes kun 1 gang, sålænge at det er åbent.. hvis det lukkes og linket klikkes igen, vil vinduet åbnes igen..
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:37 #16
Kan jeg styre størrelsen og placeringen af det nye vindue (news)? Jeg ønsker fx også at få et 'Luk Vindue' link i bunden.
Avatar billede svjensen Nybegynder
09. oktober 2003 - 23:39 #17
Jeg logger af for i aften. Jeg kigger mere p ådet i morgen formiddag
Avatar billede thb Nybegynder
09. oktober 2003 - 23:41 #18
Det nemmeste ville være at:

<%
mode = request.querystring("mode")
select case mode
case ""
  Her er dine links...
  Lav så dit åbning af vindue med java script:
    <a href='java script:void()' onclick='java script:window.open('denne-fil.asp?mode=nyhed&id=<%=nyhed("id")%>','','',''....)'>Klik her</a>
case "nyhed"
  SQL = "select.... where id=" & request.querystring("id")

  response.write nyhed("helenyheden")
end select
%>

Håber at det gav mening, god nat.. :)

Thomas
Avatar billede thesurfer Nybegynder
09. oktober 2003 - 23:51 #19
jeg ligger lige et svar.. just in case..
Avatar billede thesurfer Nybegynder
10. oktober 2003 - 00:15 #20
<%
Option Explicit
' ved at bruge Option Explicit, tvinger vi os selv til at definere vores variabler,
' hvilket beyder at vi undgår stavefejl

' definering af variabler:
dim newsid, strSQL

' variablen "newsid" får værdien af id'en fra urlen:
newsid = request.querystring("id")

if IsNumeric(newsid) then ' vis skal sikre os at id'en er et tal, og ikke bogstav kombination

    ' din kode til forbindelsen her
    ' din sql sætning (noget der ligner):
    strSQL = "select * from news where id = '" newsid "'"
    ' åben forbindelse

    ' før vi begynder at udskrive fra databasen, skal vi sikre os at der ER noget at udskrive..
    ' hvis placeringen er FØR starten eller EFTER slutningen, så er der ingen poster med inlægget

    if (not rs.bof) and (not rs.eof) then
        ' posten blev fundet, udskriv alt info om den id:
        response.write "Overskrift: " & rs("overskrift")
        response.write "Dato: " & rs("dato")
        ' osv..
    else
        ' der blev ikke fundet nogen poster, selvom id'en var et tal.
        response.write "Ingen poster fundet."
    end if

else
    ' fejl: id'en ikke er et tal som det skal være.
    ' du kan lukke vinduet uden fejlmeddelelse:
    ' response.write "<script language='javascript'>window.close();</script>" ' med javascript
    ' response.write "<body onLoad='window.close();'>" ' med html
    response.write "Id'en er ikke gyldig!"
end if
%>

<br><br>
<a href="#" onClick="window.close();return false">Luk Vindue</a>
Avatar billede svjensen Nybegynder
10. oktober 2003 - 07:43 #21
Bare for at jeg har forstået det rigtigt:

Din nederste kommentar er et forslag til indeholdet af filen denn-fil.asp, som du vil åbne i vinduet i din næstsidste kommentar?

Hvis jeg skal resize og centrere vinduet, er det så i kaldet af vinduet (onclick='java script:window.open('denne-fil.asp?mode=nyhed&id=<%=nyhed("id")%>','','',''....)'?
Avatar billede thesurfer Nybegynder
10. oktober 2003 - 12:47 #22
ja det lyder rigtigt..

min kode fra:
<%
Option Explicit
' v...

til

%>

<br><br>
<a href="#" onClick="wi.....

indsætter du i news.asp eller denne-fil.asp.

i dit link har du så (som du siger):
onclick="java script:window.open('denne-fil.asp?id=<%=nyhed("id")%>','vinduenavn','width=100,height=100...')">

du behøver ikke at bruge mode til noget, med mindre du har flere "funktioner" i samme fil, og skal finde ud af hvad hvilken "funktion" du skal bruge..

da du kun skal hente en nyhed med en bestemt id, og filen selv kun bruges til news, så bruger du kun "?id=<%nyhed("id")%>"
Avatar billede thb Nybegynder
10. oktober 2003 - 14:21 #23
svjensen > Det er nemlig rigtigt, så skulle det virke.. :)

Thomas
Avatar billede thesurfer Nybegynder
10. oktober 2003 - 16:42 #24
thb> "Det nemmeste ville være at..." (indlæg 09/10-2003 23:41:39)

jeg ved ikke om det var fordi det var sent, at du kom med det forslag :), men at bruge mode er da overflødigt, da det er et simpelt script med kun 1 parameter.. vi skal jo kun bruge id'en..
Avatar billede thb Nybegynder
10. oktober 2003 - 18:39 #25
ja okay.. kun id... :)
Det er vel rigtigt.. Men man ved jo aldrig om der er mere i scriptet.. :)

Det er hvertfald den måde der er den nemmeste i MINE øjne..

Thomas
Avatar billede svjensen Nybegynder
10. oktober 2003 - 21:54 #26
OK, jeg kan nu få åbnet min vis-news.asp fil i et nyt vindue vha.:

<a onclick="java script:window.open('vis-news.asp?id=<%=rs("newsid")%>', 'Nyheder', 'width=500', 'height=535', 'scrollbars=yes', 'resizable=yes');" href='#'>
Læs mere >></a>

Jeg kan dog ikke få højden til at justere sig, og jeg savner at få vinduet centreret. Jeg har en idé om, at jeg i stedet for at åbne vinduet direkte vha. ovenstående, kan kalde en funktion, sm beregner placeringen af vinduet. Men hvordan skal min funktion se ud?
Avatar billede thesurfer Nybegynder
11. oktober 2003 - 01:10 #27
brug den her til generering af kode til åbning af vinduet:
http://roenving.users.whitehat.dk/WindowLaboratory.html
Avatar billede thesurfer Nybegynder
11. oktober 2003 - 01:25 #28
ahh... det er fordi du har skrevet parametrene forkert :)

alle dine parametre skal være indenfor den tredje om '' separaret af komma.. altså 'width=100%,height=100...');

og hvis du skal bruge < eller > i alm tekst, skal du skrive:
<: &lt;
>: &gt;

sådan her:
<a onclick="java script:window.open('vis-news.asp?id=<%=rs("newsid")%>', 'Nyheder', 'width=500,height=535,scrollbars=yes,resizable=yes');" href='#'>Læs mere &gt;&gt;</a>
Avatar billede thesurfer Nybegynder
11. oktober 2003 - 01:29 #29
jeg ved ikke lige hvor det der % kom fra :)
opsætningen er: window.open('', '', ''), dvs 3 gange ''.. og

eks.:
window.open('adresse', 'navnet-på-vinduet', 'bredde,højde,whatever');
Avatar billede thesurfer Nybegynder
11. oktober 2003 - 01:31 #30
thb> der er jo en chance for at scriptet skal udbygges på et tidspunkt.. og så kan svjensen kigge tilbage i spm'et og se hvordan det gøres :)
Avatar billede svjensen Nybegynder
13. oktober 2003 - 11:44 #31
Så er det lykkedes at få det til at fungere, som jeg gerne vil have det.

Til eventuel glæde for andre, så kommer her min løsning:

I min fil 'news.asp' er der øverst følgende script, som beregner placeringen af et popupvindue, for at kunne centrere det, og som efterfølgende åbner det nye vindue. Scriptet skal bruge url på den side der skal åbnes, samt vinduets hødde og bredde:

<script language="javascript">
function PopupCentrer(url, w, h)
{
    winTop=(screen.height-h)/2;
    winLeft=(screen.width-w)/2;
    window.open(url, "Nyheder", "width="+w+", height="+h+", top="+winTop+", left="+winLeft+", scrollbars=yes, resizable=yes, status=no");
}
</script>

'news.asp' viser kun en teaser af hver nyhed, som følges af 'Læs mere >>'. Dette er lavet som et link:

<a href="java script:void(0);" onClick="PopupCentrer('vis-news.asp?ID=<%=rs("newsid")%>', '500', '535');">
Læs mere &gt;&gt;</a>

Siden der åbnes i popup vinduet 'vis-news.asp' ser således ud:
====================start====================
<!--#include file="include/connection.asp"-->
<!--#include file="include/function-omskrivtillink.asp" -->

<html>
<head>
<%
strSQL = "SELECT * From news WHERE newsid = " & request.querystring("id")
set rs = conn.execute(strSQL)

  dag = DatePart("d", rs("dato"))
  If Len(dag) = "1" Then dag = "0" & dag
  maaned = DatePArt("m", rs("dato"))
  If Len(maaned) = "1" Then maaned = "0" & maaned
  aar = DatePart("yyyy", rs("dato"))
  dato = dag & "-" & maaned & "-" & aar

%>
<title><%= rs("overskrift") %></title>
<link rel="stylesheet" type="text/css" href="css/bball.css">
</head>
<body>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<script language="JavaScript" src="include/overlib.js"><!-- overLIB (c) Erik Bosrup --></script>

<p align=left><b><%= rs("overskrift") %></b><br><br>

<%
tekst = OmskrivTilLink(rs("tekst"))
response.write tekst
%>
<br><br>
Oprettet af
<%
filnavn = "members/" & rs("medlemsnr") & ".jpg"
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(filnavn) Then%>
    <a onmouseover="return overlib('', BORDER, 1, BACKGROUND, '<%=filnavn%>' ,HEIGHT , -30, CENTER, ABOVE, WIDTH, 60, HEIGHT, 90);" onmouseout="return nd();">
    <img valign=top border=0 hspace=0 src="images/foto-thumb.gif"></a>&nbsp;
    <a  href='mailto:<%= rs("authoremail") %>?subject=<%= rs("overskrift")%>'><%= rs("author")%></a> <%= dato%></p>
<%Else%>
    <a onmouseover="return overlib('Billede er på vej.', WIDTH, 105);" onmouseout="return nd();">
    <img valign=top  border=0 hspace=0 src="images/foto-thumb.gif"></a>&nbsp;<a href='mailto:<%= rs("authoremail") %>?subject=<%= rs("overskrift")%>'><%= rs("author")%></a> <%= dato%></p>
<%End if%>

<p align=center><a onClick='window.close();' href='#'>Luk vindue</a></p>

</body>
</html>
<!--#include file="include/close.asp"-->
==================Slut=====================

Det færdige resultat kan ses på www.silkeborgbasketball.dk under 'Nyheder'

Tak til thesurfer for hjælpen.
Avatar billede thesurfer Nybegynder
14. oktober 2003 - 12:22 #32
Jamen, det var da så lidt :)

jeg kan godt lige den her (nyhed, "Tredje sejr på stribe.", Af Bo Højland 13-10-2003):

"Søndag den 12/10-03 spillede Danmarksserien mod Ålborg 3 på udebane. Det blev til en storsejr på 52-..."

hehe.. det kunne lige så godt have været "Meningen med livet er prik prik prik" den er faktisk sjov :)

så tænker man bare "noooooooooo" :)

Det er lækkert at se det in-action..
/theSurfer.
Avatar billede 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. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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