ส่วนขยายของ Chrome: จะลบสคริปต์เนื้อหาหลังการฉีดได้อย่างไร

ด้วยส่วนขยายของ Google Chrome: เป็นไปได้ไหมที่จะลบสคริปต์เนื้อหาหลังจากที่ถูกแทรกเข้าไปในเพจแล้ว?

ไม่มีวิธี API สำหรับการโหลดสคริปต์เนื้อหาซ้ำ (เท่าที่ฉันรู้) ดังนั้นฉันต้องการแทรกสคริปต์ใหม่และลบสคริปต์เก่าออกหากเป็นไปได้


person Azmisov    schedule 28.08.2013    source แหล่งที่มา


คำตอบ (2)


ไม่ คุณไม่สามารถ "ลบ" มันได้ การเรียกใช้สคริปต์เนื้อหาอาจมีผลข้างเคียง เช่น การประกาศตัวแปรและฟังก์ชันบนออบเจ็กต์หน้าต่าง การเชื่อมต่อกับเพจเบื้องหลัง หรือการฟังเหตุการณ์ DOM หากสคริปต์เนื้อหาของคุณไม่มีผลข้างเคียง ก็เหมือนกับการไม่ได้ฉีดเลย

หากคุณต้องการฉีดเข้าไปใหม่ เพียงเรียกดำเนินการสคริปต์ด้วยโค้ดหรือพารามิเตอร์ต้นทาง อาจเป็นการดีที่จะกำหนดสคริปต์ที่ฉีดของคุณเป็นฟังก์ชัน จากนั้นเรียกใช้ .toString() บนฟังก์ชัน และฉีดให้เป็นสตริงดิบด้วยอาร์กิวเมนต์ "code" เพื่อรันสคริปต์ อาร์กิวเมนต์ของฟังก์ชันเหล่านี้สามารถแทรกเป็นสตริง JSON ได้ ซึ่งสะดวกยิ่งขึ้นไปอีก

person kzahel    schedule 28.08.2013
comment
ฉันกลัวว่านั่นคือคำตอบ แค่ทำงานอีกสักหน่อยสำหรับฉัน ฉันคิดว่า - person Azmisov; 28.08.2013
comment
มันน่าสนใจว่ามันทำงานอย่างไร เมื่อใดก็ตามที่ฉันป้อนดีบักเกอร์ในสคริปต์เนื้อหา บานหน้าต่างจะแสดงเป็นสีเหลือง และฉันเห็น [VM] เป็นแหล่งที่มาของสคริปต์ ฉันสงสัยว่ามันจะนำมาซึ่งอะไรในการดำเนินการบางอย่างที่จะพยายามลบผู้ฟังเหตุการณ์ทั้งหมดและสคริปต์เนื้อหาอาจสร้างผลข้างเคียงอื่น ๆ - person kzahel; 28.08.2013
comment
อาจจะดีกว่าถ้าเขียนสคริปต์เนื้อหาเพื่อให้คุณสามารถเรียกใช้ฟังก์ชันเพื่อรีสตาร์ทได้ - person e-motiv; 25.02.2018

ฉันคิดว่าหากคุณโหลดสคริปต์เนื้อหาแบบไดนามิก คุณสามารถบังคับให้รีเฟรชหน้าโดยใช้ javascript (window.location.reload()) ในครั้งนี้โดยไม่โหลดสคริปต์เนื้อหา

person ejectamenta    schedule 29.03.2015