จะทำให้เพจโต้ตอบกับเพจพื้นหลังได้อย่างไร?

ส่วนขยาย Chrome ของฉันมีหน้าพื้นหลังที่รันสคริปต์บนแท็บปัจจุบัน

สคริปต์เปลี่ยนองค์ประกอบบนแท็บปัจจุบันโดยการเพิ่มโค้ดให้กับองค์ประกอบที่มีอยู่เพื่อเรียกใช้ฟังก์ชัน 'myFunction' ที่กำหนดไว้ที่หน้าพื้นหลังเมื่อมีเหตุการณ์ 'onClick' เกิดขึ้น ปัญหาคือมีข้อยกเว้นว่า 'myFunction' ไม่ได้ถูกกำหนดไว้ในแท็บปัจจุบัน

วิธีที่ดีที่สุดในการเปิดใช้การโต้ตอบนี้คืออะไร? เพื่อเปิดใช้งานหน้าปัจจุบันเพื่อไปที่ฟังก์ชั่นที่กำหนดไว้บนหน้าพื้นหลัง?

ขอบคุณล่วงหน้า!


person yossharel    schedule 29.09.2013    source แหล่งที่มา


คำตอบ (2)


หน้าพื้นหลังจะดำเนินการในบริบทที่เป็นอิสระ ดังนั้นจึงไม่สามารถดำเนินการฟังก์ชันได้โดยตรงในแท็บที่เปิดอยู่ในปัจจุบัน

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

หากไม่มีข้อมูลเพิ่มเติม ก็ยากที่จะช่วยเหลือคุณได้มากขึ้น

person Métoule    schedule 29.09.2013

ดังที่กล่าวไว้ในคำตอบแรก "หากไม่มีข้อมูลเพิ่มเติม ก็ยากที่จะช่วยเหลือคุณได้มากขึ้น" แต่สำหรับคำถามที่สองของคุณ ดูเหมือนว่าสิ่งที่คุณต้องการคือการอ้างอิงถึงฟังก์ชันที่กำหนดไว้ในหน้าพื้นหลังของคุณ ซึ่งสามารถทำได้ด้วยฟังก์ชัน getBackgroundPage รหัสมีลักษณะเช่นนี้

var bgPage = chrome.extension.getBackgroundPage();
bgPage.myFunction();
person shrunyan    schedule 30.09.2013