![](/img/trans.png)
[英]How to Call javascript function with onclick event in another page html
[英]How to call the javascript function of one web page from another web page using onclick attribute in html?
我想從另一個網頁調用一個網頁的javascript函數。 假設我有一個在A.html
定義的函數myFunction()
並且我想使用onclick
屬性在B.html
使用它。 我如何在B.html
使用onclick
調用myFunction()
,以便它可以給A.html
帶來一些變化?
這是示例...
A.html
包括
<script>
function myFunction() {
document.getElementById("my_contents").style.display="block";
}
</script>
B.html
有
<a href="Contents.html#entertainment" target="ccc" onclick="myFunction()">
<h4>Entertainment</h4></a>
您嘗試做的事情是不可能的,因為 HTML 頁面不會使“本地”功能可用於其他網頁。
解決您的問題:創建一個名為script.js
的文件。 將您的 javascript 函數放在其中,沒有<script>
標簽。
在兩個網頁的<head>
標簽中,添加<script src="path/to/script.js"></script>
首先,窗口之間必須有一個鏈接,就像您使用window.open()
打開頁面一樣。
Window 對象是 JavaScript 中的全局對象。 如果兩個窗口(頁面)都有名稱,您可以從另一個調用一個窗口方法。 要從子窗口調用父窗口函數,我們調用window.opener
函數。 探索該領域的更多選擇。
您不能從任何頁面隨機調用任何頁面 javascript 函數,就像您不能在 facebook.com 中調用 google.com 的 javascript 函數一樣,除非未使用window.open()
從 google.com 頁面打開 facebook 頁面。
您可以使用localStorage (同一域上的頁面可以訪問相同的存儲)。 將消息/指令保存到存儲中,兩個頁面都將通過計時器進行檢查。
或者,如果頁面 B 被頁面 A 打開,則使用方法postMessage ( https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage )。
stackoverflow 上有一些有趣的解決方案: 瀏覽器選項卡/窗口之間的 Javascript 通信
解決方案示例:
一個.html
<script>
setInterval(function(){
var isNeedCall = localStorage.getItem('isNeedCall');
if(isNeedCall == 'yes'){
myFunction();
localStorage.setItem('isNeedCall', 'no');
}
}, 500);
function myFunction() {
document.getElementById("my_contents").style.display="block";
}
</script>
B.html
<script>
function myFunction() {
localStorage.setItem('isNeedCall', 'yes');
}
</script>
<a href="Contents.html#entertainment" target="ccc" onclick="myFunction()">
<h4>Entertainment</h4></a>
您需要創建一個單獨的文件,例如 myscript.js 並使用script
標記將其鏈接到頁面中。
從您想要實現的目標來看,聽起來您必須以某種形式的書面文件或 SQL 數據庫的形式存儲來自 'A.html' 的這個定義的“值”......然后將值放入“B.html”填充某種默認值,除非在存儲文件/SQL 數據庫中指定。 這可以實現,但不能像Tom Nijs指出的那樣僅使用 HTML 和 Javascript。 您可能可以通過使用 PHP 或 Java 來實現結果。
...或者忽略我所說的,只擁有一個預定義值的列表/數組。
頁面 B 可以調用頁面 A 上的任何函數。(如果需要的函數在 window 對象中)。 它不安全,但它有效。
頁面 A:
<script>
var callFunction;
setInterval(function(){
callFunction = localStorage.getItem('callFunction');
if(callFunction && (window[callFunction] instanceof Function)){
window[callFunction]();
localStorage.setItem('callFunction', '');
}
}, 500);
function myFunction() {
document.getElementById("my_contents").style.display="block";
}
</script>
頁面 B:
<script>
function callFunction(functionName){
localStorage.setItem('callFunction', functionName);
}
</script>
<a href="/" onclick="callFunction('myFunction')">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.