Panggil fungsi Javascript dari URL / address bar

112

Apakah mungkin untuk memanggil fungsi javascript dari URL? Saya pada dasarnya mencoba memanfaatkan metode JS di halaman yang tidak memiliki akses ke sumbernya.

Sesuatu seperti: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

Saya tahu jika Anda memasukkannya javascript:alert("Hello World");ke bilah alamat, itu akan berhasil.

Saya menduga jawabannya adalah tidak tetapi, hanya bertanya-tanya apakah ada cara untuk melakukannya.

DazManCat
sumber
3
Perilaku apa yang harus ditampilkan URL Anda - apakah Anda ingin menjalankan Javascript dalam konteks situs itu?
Pekka
Bagian http:di awal URI memberi tahu browser "Saya ingin Anda membuat permintaan HTTP", jadi permintaan HTTP yang dilakukannya. Tidak ada jalan lain, saya pikir.
Constantin
7
Jika saya menempelkan javascript:alert("Hi");ke bilah alamat Firefox (28.0) dan menekan Enter, tidak ada yang terjadi. Mungkin ini telah dinonaktifkan? ... Ya, tampaknya ini telah dinonaktifkan karena orang bodoh dapat diyakinkan untuk menempelkan apapun ke bilah alamat mereka. Menemukan infonya di sini: stackoverflow.com/a/18782801/111036
mivk
1
copy paste tidak berfungsi, tetapi jika Anda mengetiknya, berfungsi, sepertinya tidak dinonaktifkan, tetapi diurai saat ditempel.
Bhabani Sankar Mishra
1
Catatan: ini hanya bekerja di Firefox jika 1. Anda berada di halaman aktual (tidak kosong) dan 2. Anda secara eksplisit meletakkan "javascript:" di depannya.
Andrew

Jawaban:

59

Tidak ada dari hyperlink, tidak. Tidak, kecuali halaman tersebut memiliki skrip di dalamnya khusus untuk ini dan memeriksa beberapa parameter .... tetapi untuk pertanyaan Anda, tidak, tidak ada dukungan bawaan di browser untuk ini.

Namun ada bookmarklet yang dapat Anda tandai untuk menjalankan fungsi JavaScript dengan cepat dari bilah alamat Anda; tidak yakin apakah itu memenuhi kebutuhan Anda, tetapi sedekat mungkin.

Nick Craver
sumber
5
Saya pada dasarnya mencoba untuk meningkatkan metode JS di halaman yang tidak memiliki akses ke sumbernya.
DazManCat
27

Tulis di bilah alamat

javascript:alert("hi");

Pastikan Anda menulis di awal: javascript:

hfarazm
sumber
1
Tidak berfungsi di Google Chrome Versi 80.0.3987.132 (Versi Resmi) (64-bit). Chrome secara otomatis javascript:menghapus awalan dari bilah alamat.
Stomy
2
@stomy Sayangnya Anda perlu mengetik javascript:secara manual
wjandrea
24

Anda dapat menggunakan URI Data. Sebagai contoh: data:text/html,<script>alert('hi');</script>

Untuk informasi lebih lanjut kunjungi: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

yassine45
sumber
1
Saya selalu berpikir url data hanya untuk gambar, terima kasih ini benar-benar luar biasa :)
Tarif Alnamrouti
2
Anda tidak dapat menambahkan ini ke url.
nice_dev
Beberapa browser mungkin memblokir ini dengan pesan:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov
Ini berfungsi di Google Chrome Versi 80.0.3987.132 (Build Resmi) (64-bit).
Stomy
itu bekerja di dalam Chrome 80.0.3987.162 (Official Build) (64-bit)dan di dalamFirefox 72.0.2 (64 bit)
Alex Pandrea
6

/test.html#alert('heello ')

test.html
<button onClick="eval(document.location.hash.substring(1))">do it</button>
Budia
sumber
13
Perhatikan bahwa mengevaluasi input pengguna ini adalah praktik yang sangat berbahaya dan biasanya tidak diizinkan.
domenukk
6
Ya, ini benar-benar gila. Ada tempat kerja di mana Anda akan dipecat karena jenis kegilaan ini.
Jacob
6
Hal ini mengarah pada masalah pembuatan skrip lintas situs (XSS) yang tercermin seperti yang ditunjukkan oleh @domenukk.
pavanw3b
6

Anda juga dapat menempatkan berikut ini

<a href='javascript:alert("hello world!");'>Click me</a>

ke kode html Anda, dan ketika Anda mengklik hyperlink 'Klik saya', javascript akan muncul di bilah-url dan dialog Peringatan akan ditampilkan

heksimal
sumber
5
javascript akan muncul di url-bar di browser apa? Saya belum pernah melihat itu. (Saya tahu javascript: tautan berfungsi, saya hanya berbicara tentang bilah URL)
Sean Patrick Floyd
Saya juga tidak. Saya tahu Anda dapat mengetik JS ke bilah alamat
DazManCat
Ini yang saya cari, ini namanya apa?
ThorSummoner
4

Tentang window.location.hashproperti:

Kembalikan bagian jangkar dari URL.


Contoh 1:

//Assume that the current URL is 

var URL = "http://www.example.com/test.htm#part2";

var x = window.location.hash;

//The result of x will be:

x = "#part2"

Contoh 2:

$(function(){   
    setTimeout(function(){
        var id = document.location.hash;
        $(id).click().blur();
    }, 200);
})

Contoh 3:

var hash = "#search" || window.location.hash;
window.location.hash = hash; 

switch(hash){   
case "#search":  
    selectPanel("pnlSearch");
    break;    
case "#advsearch":    

case "#admin":  

}
Eddy
sumber
3

Menggunakan jawaban Eddy bekerja dengan sangat baik karena saya memiliki masalah yang sama. Cukup panggil url Anda dengan parameter: "www.mypage.html # myAnchor"

Kemudian, di mypage.html:

$(document).ready(function(){
  var hash = window.location.hash;
  if(hash.length > 0){
    // your action with the hash
  }
});
EllemKah
sumber
2

Anda dapat menggunakan situasi seperti ini: misalnya, Anda memiliki halaman: http://www.example.com/page.php lalu di halaman itu.php, masukkan kode ini:

if (!empty($_GET['doaction']) && $_GET['doaction'] == blabla ){
echo '<script>alert("hello");</script>';
}

lalu, setiap kali Anda mengunjungi url ini: http://www.example.com/page.php?doaction=blabla

maka peringatan akan dipanggil secara otomatis.

T.Todua
sumber