Kezdőoldal » Számítástechnika » Programozás » Html programozás. Hogyan...

Html programozás. Hogyan tudok egy oldalról (egy linkkel, vagy scripttel) egy másik oldalt megnyitni és azon egy scriptet elindítani?

Figyelt kérdés
2023. nov. 29. 20:12
 1/6 anonim ***** válasza:
51%
Megnyitni könnyű. Ott scriptet futtatni, na azt sehogy szerintem. Milyen scriptről lenne szó?
2023. nov. 29. 22:03
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
Az a.html ben egy olyan link, vagy gomb mely a b.html-t megnyitja és ott ennek hatására lefuttatja a scriptet ami lenyit egy ablakot. Az lényeges lenne, hogy a linkre vagy gombra való kattintás idézze elő, ne pedig a b.html betöltése során automatikusan (onload).
2023. nov. 29. 22:39
 3/6 2*Sü ***** válasza:
23%

A probléma – és a szerencse – az, hogy kívülről nem lehet egy oldalt úgy behívni, hogy azon egy olyan script fusson, ami eredetileg nem futott volna. Különben írok egy scriptet, ami meghívja a GYK-t, és privát üzeneteket küldözget. Meg millió és egy visszaélésre adhat okot.


Amit viszont meg lehet tenni, hogy az a.html az egy window.open('b.html') utasítással nyitja meg a b.html oldalt. Ezután a b.html-ből elérhető lesz az a.html window objektuma, amire a b.html-en belül a window.opener -rel lehet hivatkozni. A futtatandó kódot a b.html tartalmazza, ami feltételesen fut le, mondjuk hogyha egyáltalán a window.opener nem null és mondjuk a window.opener.location az, ami, vagy mondjuk van olyan változó, ami kell. (A b.html-ből meg lehet hívni az a.html függvényeit is, de azok az a.html oldalon futnak le.)


Pl.:

======= a.html =======

<script>

// …

azEnTitkosValtozom=1;

function csinaljValamit(param) { … }

// …

</script>

<div onClick="window.open('b.html')">Gomb</div>

=====================


======= b.html =======

<script>

// …

if (window.opener && window.opener.location.href='………/a.html') { … }

// vagy

if (window.opener && window.opener.azEnTitkosValtozom) { … }

// vagy

if (window.opener && typeof window.opener.csinaljValamit == 'function') window.opener.csinaljValamit(param);

// …

</script>

=====================

2023. nov. 30. 00:02
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
77%
A b.html onload scriptjében ellenőrzöd, hogy a referer az a.html volt-e. Ha nem onnan jöttek át, akkor nem futtatod le a script többi részét.
2023. nov. 30. 03:09
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Köszönöm a segítséget. Végül a ChatGpt segített, kb 10 rossz kód után elküldte azt, ami működött is. leírom ide, hátha segít másnak:


-------------------

a.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>a.html</title>

</head>

<body>


<!-- Linkeled a b.html oldalt, és hozzáadsz egy URL paramétert, hogy a script elinduljon -->

<a href="b.html?runScript=true" target="_blank">Nyiss meg és indítsd el a scriptet</a>


</body>

</html>


--------------------

b.html:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>b.html</title>

<script src="script.js"></script>

</head>

<body>


<!-- Példa elem, amire kattintani szeretnél -->

<button id="c" onclick="runScript()">Kattints ide</button>


</body>

</html>

------------------

script.js

function runScript() {

document.getElementById("c").click();

}


// Ellenőrzi, hogy az oldal megnyitásakor a URL tartalmazza-e a "runScript" paramétert

document.addEventListener("DOMContentLoaded", function() {

const urlParams = new URLSearchParams(window.location.search);

if (urlParams.has('runScript')) {

runScript();

}

});

2023. nov. 30. 13:20
 6/6 2*Sü ***** válasza:

#4 > A b.html onload scriptjében ellenőrzöd, hogy a referer az a.html volt-e.


Ha abszolút nem kell kommunikálnia a két oldalnak egymással, akkor teljesen jó, egyszerűbb is, mint amit én írtam. A hátránya annyi, hogy a referer átadását le lehet tiltani, de ez valószínű nagyon kevés embert érint. Az én megközelítésemet meg adott esetben egy popup blocker húzhatja keresztül, tehát az sem jobb ebből a szempontból.


Illetve mindkettőnk megoldásának a sajátossága, hogy a b.html újratöltésével a script újra lefut. Hogy most ezt pont jó, vagy pont kerülendő, azt nyilván nem tudjuk.


#5 > b.html?runScript=true


Ezzel az a gond – legalábbis fix, statikus paraméter esetén –, hogy ezt a linket így, a GET paraméterrel együtt meg lehet nyitni önmagában. Mondjuk begépelve, könyvjelzőből megnyitva vagy linkként megkapva. Adott esetben úgy is meg lehet nyitni a b.html?runScript=true URL-t, hogy az adott illető életében nem járt az a.html oldalon. Ez ebben a formában semmivel nem másabb, mintha a b.html oldalt átneveznéd b_runscript.html -re.


Úgy már jobb a dolog, ha GET paraméterrel a UNIX timestampet adod át, a b.html meg azt ellenőrzi, hogy az 5–10 másodpercnél nem régebbi-e. Így tuti, hogy csak akkor fog lefutni a script, ha éppen most lett megnyitva az a.html oldalról. (A b.html újratöltése után viszont – ha 5–10 másodperccel később történik ez meg – a script nem fut le újra, hiszen addigra a süti lejár. Hogy ez most jó-e vagy sem, azt megint nem tudjuk mérlegelni, mert nem adtál elég infót hozzá.) (Meg ez így nyilván eléggé manipulálható kliens oldalról, ami megint nem tudható, hogy baj-e vagy sem.)

2023. nov. 30. 22:07
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!