window.open i safari?

Tråden skapades och har fått 18 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2005-02-14 10:06

Hej!
Tvingas sitta och jobba i windows samt det inte allt för sexiga men trots allt ganska kraftfulla asp.net på jobbet.

Håller på med en webbshop och stör mig mer och mer på safaris 'dåliga' stöd för javascript.

Försöker få en knapptryckning att (bl.a.) resultera i att ett fönster i en annan frame laddas om.

Jag använder nu följande rad, som fungerar i explorer och firefox men inte i safari.

Response.Write("<script>window.open('ShoppingCart.aspx','kundvagn');</script>")

(för er som inte är bekanta med asp.net så gör response write att kodsträngen slängs ut överst i dokumentet.

Förslag på scripts som fungerar i safari?

  • Medlem
  • 2005-02-14 10:58

Har för mig att javascript enligt definitionen ska ha ett "close" för att tala om för läsaren att sidan är "färdig".

pw=window.open('ShoppingCart.aspx','kundvagn','toolbar=no,scrollbars=no,menubar=no,width=350,height=400');
pw.document.close();

  • Oregistrerad
  • 2005-02-14 12:54

Kan det inte vara Safaris blockering av pop-up-rutor?

  • Medlem
  • Stockholm
  • 2005-02-14 13:15

torbjorn. det är en teori jag har också.. safari är ju väldigt kinkigt med js. men firefox blockar ju också popups och där funkar det.

  • Medlem
  • 2005-02-14 13:35

Om javascriptet startas "automatiskt" när sidan laddas, som onload eller fritt liggande kod-snutt, kommer Safari att blockera den. Körs scriptet när användaren trycker på en länk/knapp, så ska det tillåtas.

Men testa för all del att stänga av blocken i Safari.

  • Medlem
  • Stockholm
  • 2005-02-14 13:38

hur kan man då få en knapptryckningen i en frame att uppdatera en annan frame?

  • Medlem
  • 2005-02-14 14:12

Får jag föreslå lite standard html...
<a href="sidanduvillladda" target="framenduvillladdai">..</a>

  • Medlem
  • Stockholm
  • 2005-02-14 14:37

sirN ... i min knapptryckning så körs ganska så många rader kod.. onloaden är bara en av dem

  • Medlem
  • 2005-02-14 14:58

<a href="sidanduvillladda" target="framenduvillladdai" onclick="ettscript()">..</a>

Ursprungligen av SirN:

Får jag föreslå lite standard html...
<a href="sidanduvillladda" target="framenduvillladdai">..</a>

Och om man ska vara riktigt nitpicky så är inte ens det där "riktig" standard-html

(om man nu inte håller sig till transitional förstås, men sånt är ju fusk)

  • Oregistrerad
  • 2005-02-24 09:08
Ursprungligen av snigel1:

hur kan man då få en knapptryckningen i en frame att uppdatera en annan frame?

Får inte det att fungera heller. Safari och Javascript är inte helt lyckat. Borde funka med:

onclick="window.parent.frames['ram_namn'].location='test.html'"

  • Medlem
  • Stockholm
  • 2005-02-24 09:37

den där senaste får du gärna översätta så den fungerar i <div></div>....

kan man verkligen ha en div innan för head?

a ja. dot net är jävligt smidigt på vissa saker men det är hopplöst att få ut koden som man vill ha den.. jag loopar in min htmlkod i strängar som jag returnerar till divar. lite hemsnickrad lösning men det funkar ju

Ursprungligen av snigel1:

kan man verkligen ha en div innan för head?

Nix. Bara i body.

Ursprungligen av palb:

Safari och Javascript är inte helt lyckat. Borde funka med:

onclick="window.parent.frames['ram_namn'].location='test.html'"

Jag har inte märkt några konstigheter med Safari och JavaScript. Slängde ihop ett snabbtest och ditt exempel funkar utmärkt i Safari.

  • Medlem
  • Stockholm
  • 2005-02-14 15:35

sir N...

i asp.net så skrivs den riktiga "koden" separarad från htmlkoden.
knapptryckningen är en egen klass, med massa kodrader i.
är ganska säker på att man måste använda de fördefinierade knappkoderna som finns i asp.net

min enda frihet är att jag kan skriva ut vad som helst högst upp på sidan, alt returnera något till en div eller annan element.

  • Medlem
  • Stockholm
  • 2005-02-15 16:28

hjälp någon?

Du skriver att scriptet "slängs ut överst i dokumentet". Menar du det bokstavligt, att det hamnar före DOCTYPE och html, eller hamnar det överst i body-elementet? Om det hamnar någon annanstans än i head- eller body-elementen lär det bli problem eftersom script-element bara får finnas där.

Ange också vilken slags script det är, alltså <script type="text/javascript">.

Annars är det svårt att säga utan att se fullständiga exempel.

  • Medlem
  • Stockholm
  • 2005-02-23 16:07

system.log. ja det hamnar allra överst.

vet tyvärr itne hur man kan få det att hamna inom head i asp.net...

antingen returnerar man kod till en div eller annat objekt som ligger inom bodyn och dess "webform".... eller så kör man response.write så det hamnar överst

Allra överst är inte bra. Då är det inte konstigt om vissa webbläsare struntar i scriptet (vilket alla borde göra). Om du skickar in ett script-element i en div i body-elementet i stället är det åtminstone inte felaktig HTML (vilket du förmodligen har en hel del av ändå i och med att det handlar om .Net - man måste göra en hel del handpåläggning för att få .Net att generera HTML i stället för MS-kryddad taggsoppa).

1
Bevaka tråden