我找不到任何失敗,並深入瞭解問題......因此,我發佈了第二個答案,因爲問題的性質畢竟不同,代碼正在工作,但並不像預期的那樣原因如下:
如果加載腳本異步,頁面在腳本仍在加載時將繼續呈現,所以有可能其他沒有異步腳本後來的腳本將比一些仍在查詢中的異步腳本更早開始加載... 在這裏,我們沒有異步的,但它似乎即使即使async關鍵字不存在,雖然腳本將依次按順序進入查詢中,但服務器將依次加載3或4個腳本平行!
- >所以它發生較短的腳本可能完成之前較長的加載allthough他們開始後加載...
在我的研究,我無法找到這一問題的最終解決,因爲看起來很難控制這個加載過程的細節! (你可以在板上找到關於這種現象的一些話題...)
我將介紹一些不同的方法,你將不得不自己測試它們,因爲我沒有那個滑塊PlugIn,所以我可以嘗試:
解決方案1:
嘗試使用「推遲」的關鍵字,這應該是這麼說的「異步」的對面,導致頁面被完全地解析之前未加載腳本,但可悲的是我不敢肯定是否可行,以前從來沒有使用過它,它聽起來就像是一樣的使用‘的document.ready’,這是不是在這種情況下,工作... 重要的是,你必須在外部,否則插入腳本關鍵字將不會做任何事情,即:
<script src="demo_defer.js" defer></script>
解決方案2:
一個肯定工作的解決方案是增加我們的腳本作爲回調到滑塊腳本的電話,但我猜,這在這裏沒有合適的解決方案,因爲您必須更改不安全的PlugIn代碼!
解決方案3:
也許你可以用一個超時播放,以確保執行將稍後啓動,但問題是,你不能真正知道這個超時必須有多長! (即看看這裏:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout)
解決方法:
我想了一個辦法來解決這個問題,但由於前面所說的代碼是未經測試,也許嘗試,並給我一個通知,當你有包括這個劇本,所以我可以看看它是如何工作的?
這樣假設是添加了不與!重要語句的定位一類,然後在第一次點擊刪除,只是那麼元素再次定位,而不!以後在每個重要的,當然進一步的點擊定位將不會再操縱!
function sr_custom_width_for_slides()
{ ?>
<style type="text/css">
.notClicked .wmg-image.wmg-image-3.first.ui-resizable {
width: 91.6379% !important;
}
.notClicked .wmg-image.wmg-image-2 {
width: 95% !important;
}
.notClicked .wmg-image.wmg-image-3 {
width: 98.3621% !important;
}
</style>
<script type="text/javascript">
jQuery(document).ready(function() {
var firstClicked = false;
jQuery(".wmg-before-after").addClass("notClicked");
jQuery(".wmg-before-after").click(function() {
if (!firstClicked) {
jQuery(".wmg-image.wmg-image-3.first.ui-resizable").css("width","91.6379%");
jQuery(".wmg-image.wmg-image-2.ui-resizable").css("width","95%");
jQuery(".wmg-image.wmg-image-1.ui-resizable").css("width","98.3621%");
jQuery(".wmg-before-after").removeClass("notClicked");
firstClicked = true;
}
});
});
</script>
<?php }
add_action('wp_footer', 'sr_custom_width_for_slides', 1000);
編輯關於你的最後的評論:
我又查了網站,並在我的情況下,它可悲的是沒有在所有的工作,因爲單擊事件永遠不會被解僱了!我想該插件的JS代碼結合一些事件,可能停止工作,我們的腳本...(請參考函數「stopPropagation()」中的相關信息更多)。所以我最後的線索是直接綁定另一個事件,希望不是以這種方式由PlugIN操縱!至於我可以看到,這可能是 「的mouseenter」 或 「鼠標懸停」 ...
所以只是改變
jQuery(".wmg-before-after").click(function() {
...
});
到
jQuery(".wmg-before-after").mouseover(function() {
...
});
Hi @ ToTaTaRi。首先,讓我感謝你的興趣和努力。我試過這段代碼,和前一段一樣,腳本就在那裏,但沒有工作。 我也試過解決方案1(與外部腳本),但它也不工作。 這件事讓我很生氣。我會盡快嘗試解決方案3。 – Marco
我真的很抱歉,最後的代碼似乎有效,但有一個愚蠢的SYNTAX ERROR,請刪除類名前的點 - >「.notClicked」必須是「notClicked」!我更改了上面的代碼... :) – ToTaTaRi
感謝@ToTaTaRi!這終於奏效了!這只是一個「小問題」。因爲只要加載圖像,滑塊不起作用。我必須點擊一個分隔符(第二個或最後一個),稍等一會才能正常工作。有沒有辦法避免這種情況? – Marco