URL / adres çubuğundan Javascript işlevini çağırın


112

URL'den bir javascript işlevi çağırmak mümkün mü? Temel olarak kaynağa erişimim olmayan bir sayfada JS yöntemlerinden yararlanmaya çalışıyorum.

Gibi bir şey: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

javascript:alert("Hello World");Adres çubuğuna koyarsanız işe yarayacağını biliyorum .

Bunun cevabının hayır olduğundan şüpheleniyorum, ancak bunu yapmanın bir yolu olup olmadığını merak ettim.


3
URL'nizin hangi davranışı göstermesi gerekir - Javascript'i o site bağlamında çalıştırmak ister misiniz?
Pekka

http:URI başında tarayıcıyı "Ben bir HTTP isteği yapmak istiyorum", bu nedenle HTTP öyle talep söyler. Bunun etrafında bir yol yok sanırım.
Constantin

7
javascript:alert("Hi");Firefox (28.0) adres çubuğuma yapıştırırsam ve Enter tuşuna basarsam hiçbir şey olmuyor. Belki bu devre dışı bırakılmıştır? ... Evet, görünüşe göre devre dışı bırakılmış çünkü aptallar adres çubuğuna herhangi bir şey yapıştırmaya ikna edilebilirler. Bilgileri burada
buldum

1
kopyala yapıştır çalışmaz, ancak yazarsanız çalışır, devre dışı bırakılmamış gibi görünür, ancak yapıştırıldığında ayrıştırılır.
Bhabani Sankar Mishra

1
Not: Yalnızca Firefox'ta 1. gerçek (boş değil) bir sayfadayken ve 2. açıkça önüne "javascript:" koyduğunuzda çalışır.
Andrew

Yanıtlar:


59

Köprüden yok, hayır. Sayfanın içinde özellikle bunun için bir komut dosyası yoksa ve bazı parametreleri kontrol etmedikçe ... ama sorunuz için, hayır, tarayıcılarda bunun için yerleşik bir destek yoktur.

Bununla birlikte , JavaScript işlevlerini adres çubuğunuzdan hızlı bir şekilde çalıştırmak için yer imi koyabileceğiniz yer imleri vardır ; bunun ihtiyaçlarınızı karşılayıp karşılamadığından emin değilim, ancak olabildiğince yakın.


5
Temelde kaynağa erişimim olmayan bir sayfada JS yöntemlerinden yararlanmaya çalışıyorum.
DazManCat

27

Adres çubuğuna yaz

javascript:alert("hi");

Başta yazdığınızdan emin olun: javascript:


1
Google Chrome Sürüm 80.0.3987.132 (Resmi Yapı) (64 bit) üzerinde çalışmaz . Chrome, javascript:öneki adres çubuğundan otomatik olarak çıkarır .
stomy

2
@stomy javascript:Maalesef elle yazmanız gerekiyor
wjandrea

24

Veri URI'larını kullanabilirsiniz. Örneğin: data:text/html,<script>alert('hi');</script>

Daha fazla bilgi için şu adresi ziyaret edin: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs


1
her zaman data url'sinin sadece görseller için olduğunu düşünmüşümdür, teşekkürler bu gerçekten harika :)
Fareed Alnamrouti

2
bunu bir url'ye ekleyemezsiniz.
nice_dev

Bazı tarayıcılar bunu bir mesajla engelleyebilir:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov

Bu çalışır Google Chrome Sürüm 80.0.3987.132 (Resmi Yapı) (64-bit).
stomy

içinde Chrome 80.0.3987.162 (Official Build) (64-bit)ve içinde çalışıyorFirefox 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>

13
Bu değerlendirmenin kullanıcı girdisinin çok tehlikeli bir uygulama olduğunu ve genellikle izin verilmemesi gerektiğini unutmayın.
domenukk

6
Evet, bu oldukça çılgınca. Bu tür bir delilik yüzünden işten atılacağınız işyerleri var.
Jacob

6
Bu, @domenukk tarafından belirtildiği gibi, siteler arası betikleme (XSS) sorunlarına yol açar.
pavanw3b

6

ayrıca aşağıdakileri de yerleştirebilirsiniz

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

html kodunuza yönlendirin ve 'Beni tıklayın' köprüsüne tıkladığınızda, javascript url çubuğunda görünecek ve Uyarı iletişim kutusu gösterilecektir.


5
javascript hangi tarayıcıda url çubuğunda görünecek ? Bunu hiç görmedim. (Javascript biliyorum: bağlantıların işe yaradığını biliyorum, sadece URL çubuğundan bahsediyorum)
Sean Patrick Floyd

Ben de öyle. Adres çubuğuna JS yazabileceğinizi biliyorum
DazManCat

Bu aradığım şeydi, buna ne deniyordu?
ThorSummoner

4

Hakkında window.location.hashözelliği:

Bir URL çapa parçasını dönün.


Örnek 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"

Örnek 2:

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

Örnek 3:

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

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

case "#admin":  

}

3

Eddy'nin cevabını kullanmak çok işe yaradı çünkü aynı problemi yaşadım. URL'nizi şu parametrelerle çağırmanız yeterli: "www.mypage.html # myAnchor"

Ardından, mypage.html'de:

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

2

aşağıdaki gibi kullanabilirsiniz: örneğin, bir sayfanız var: http://www.example.com/page.php sonra o page.php'de şu kodu girin:

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

sonra, bu url'yi her ziyaret ettiğinizde: http://www.example.com/page.php?doaction=blabla

ardından uyarı otomatik olarak çağrılacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.