เรียกใช้ฟังก์ชัน Javascript จาก URL / แถบที่อยู่


112

เรียกใช้ฟังก์ชันจาวาสคริปต์จาก URL ได้หรือไม่ โดยพื้นฐานแล้วฉันพยายามใช้ประโยชน์จากเมธอด JS ในหน้าที่ฉันไม่สามารถเข้าถึงซอร์สได้

สิ่งที่ต้องการ: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

ฉันรู้ว่าถ้าคุณใส่javascript:alert("Hello World");ลงในแถบที่อยู่มันจะใช้ได้

ฉันสงสัยว่าคำตอบนี้คือไม่ แต่แค่สงสัยว่ามีวิธีทำหรือไม่


3
URL ของคุณต้องแสดงพฤติกรรมอะไร - คุณต้องการเรียกใช้ Javascript ในบริบทของไซต์นั้นหรือไม่
Pekka

http:ที่เริ่มต้นของ URI บอกเบราว์เซอร์ "ฉันต้องการให้คุณที่จะทำให้การร้องขอ HTTP" ดังนั้นขอ HTTP มันไม่ ฉันคิดว่าไม่มีทางรอบ ๆ
Constantin

7
ถ้าฉันวางjavascript:alert("Hi");ลงในแถบที่อยู่ Firefox (28.0) ของฉันแล้วกด Enter จะไม่มีอะไรเกิดขึ้น อาจถูกปิดใช้งาน? ... ใช่เห็นได้ชัดว่ามันถูกปิดใช้งานเนื่องจากคนโง่อาจเชื่อมั่นว่าจะวางอะไรก็ได้ในแถบที่อยู่ของพวกเขา พบข้อมูลที่นี่: stackoverflow.com/a/18782801/111036
mivk

1
การคัดลอกวางไม่ทำงาน แต่ถ้าคุณพิมพ์มันใช้งานได้ดูเหมือนว่าจะไม่ปิดใช้งาน แต่จะแยกวิเคราะห์เมื่อวาง
Bhabani Sankar Mishra

1
หมายเหตุ: จะใช้ได้เฉพาะใน Firefox เมื่อ 1. คุณอยู่ในหน้าจริง (ไม่ว่างเปล่า) และ 2. คุณใส่ "javascript:" ไว้ข้างหน้าอย่างชัดเจน
Andrew

คำตอบ:


59

ไม่ได้มาจากการเชื่อมโยงหลายมิติไม่ใช่ ไม่เว้นแต่หน้านั้นจะมีสคริปต์อยู่ภายในโดยเฉพาะสำหรับสิ่งนี้และกำลังตรวจสอบพารามิเตอร์บางอย่าง .... แต่สำหรับคำถามของคุณไม่มีการรองรับเบราว์เซอร์ในตัวสำหรับสิ่งนี้

มี แต่bookmarkletsคุณสามารถบุ๊คมาร์คได้อย่างรวดเร็วเรียกใช้ฟังก์ชัน JavaScript จากแถบที่อยู่ของคุณ ไม่แน่ใจว่าตรงกับความต้องการของคุณหรือไม่ แต่ใกล้เคียงที่สุด


5
โดยพื้นฐานแล้วฉันกำลังพยายามปรับระดับเมธอด JS ในหน้าที่ฉันไม่มีสิทธิ์เข้าถึงแหล่งที่มา
DazManCat

27

เขียนในแถบที่อยู่

javascript:alert("hi");

ตรวจสอบให้แน่ใจว่าคุณเขียนขึ้นต้น: javascript:


1
ไม่ทำงานบนGoogle Chromeเวอร์ชัน 80.0.3987.132 (รุ่นอย่างเป็นทางการ) (64 บิต) Chrome จะดึงjavascript:คำนำหน้าออกจากแถบที่อยู่โดยอัตโนมัติ
stomy

2
@stomy คุณต้องพิมพ์javascript:ด้วยตนเองขออภัย
wjandrea

24

คุณสามารถใช้ URI ข้อมูล ตัวอย่างเช่น: data:text/html,<script>alert('hi');</script>

ดูข้อมูลเพิ่มเติมได้ที่https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs


1
ฉันคิดเสมอว่า data url ใช้สำหรับรูปภาพเท่านั้นขอบคุณที่นี่ยอดเยี่ยมจริงๆ :)
Fareed Alnamrouti

2
คุณไม่สามารถต่อท้าย URL นี้ได้
nice_dev

เบราว์เซอร์บางตัวอาจปิดกั้นสิ่งนี้ด้วยข้อความ:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov

ทำงานบนGoogle Chromeเวอร์ชัน 80.0.3987.132 (รุ่นอย่างเป็นทางการ) (64 บิต)
Stomy

ใช้งานได้ในChrome 80.0.3987.162 (Official Build) (64-bit)และในFirefox 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
โปรดทราบว่าการประเมินการป้อนข้อมูลของผู้ใช้นี้เป็นการปฏิบัติที่อันตรายมากและโดยปกติแล้วไม่ควรได้รับอนุญาต
domenukk

6
ใช่มันค่อนข้างบ้า มีสถานที่ทำงานที่คุณอาจถูกไล่ออกเพราะความบ้าคลั่งประเภทนี้
เจคอบ

6
สิ่งนี้นำไปสู่ปัญหาการสร้างสคริปต์ข้ามไซต์ (XSS) ตามที่ @domenukk ชี้ไว้
pavanw3b

6

คุณอาจวางสิ่งต่อไปนี้

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

ไปยังรหัส html ของคุณและเมื่อคุณคลิกที่ไฮเปอร์ลิงก์ "คลิกฉัน" จาวาสคริปต์จะปรากฏในแถบ URL และกล่องโต้ตอบการแจ้งเตือนจะแสดงขึ้น


5
javascript จะปรากฏใน url-barในเบราว์เซอร์อะไร? ฉันไม่เคยเห็นสิ่งนั้น (ฉันรู้ว่า javascript: ลิงก์ทำงานได้ฉันแค่พูดถึงแถบ URL)
Sean Patrick Floyd

ไม่มีฉันฉันรู้ว่าคุณสามารถพิมพ์ JS ลงในแถบที่อยู่ได้
DazManCat

นี่คือสิ่งที่ฉันกำลังมองหาสิ่งนี้เรียกว่าอะไร?
ThorSummoner

4

เกี่ยวกับwindow.location.hashคุณสมบัติ:

ส่งคืนส่วนยึดของ URL


ตัวอย่างที่ 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"

Exmaple 2:

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

ตัวอย่างที่ 3:

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

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

case "#admin":  

}

3

การใช้คำตอบของ Eddy ทำงานได้ดีมากเมื่อฉันมีปัญหาเดียวกัน เพียงเรียก URL ของคุณด้วยพารามิเตอร์: "www.mypage.html # myAnchor"

จากนั้นใน mypage.html:

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

2

คุณสามารถใช้สถานการณ์เช่นนี้ตัวอย่างเช่นคุณมีเพจ: http://www.example.com/page.php จากนั้นใน page.php ให้ใส่รหัสนี้:

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

จากนั้นเมื่อใดก็ตามที่คุณเยี่ยมชม URL นี้: http://www.example.com/page.php?doaction=blabla

จากนั้นการแจ้งเตือนจะถูกเรียกโดยอัตโนมัติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.