簡體   English   中英

單擊圖像時頁面移動

[英]Page moves when I click in image

我有一個帶有圖片的頁面,單擊該圖片可以播放聲音。 但是,無論什么原因,當我單擊時,如果我位於頁面頂部,則頁面下降;如果我位於頁面底部,則頁面上升。

我嘗試了此處提出的所有解決方案: 如何在不將用戶發送到頁面頂部的情況下觸發javascript playsound事件onclick?

但似乎沒有任何效果。 我嘗試將javascript放在頭部或body標簽中,但是無論我做什么,問題似乎仍然存在。 我只需要一個圖像就可以在單擊時播放聲音,並且不移動(我將在頁面上放置數百個小圖像,如果它們繼續移動我的頁面,則上下滾動的內容會很多)。

我究竟做錯了什么?

這是我的代碼:

`

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ro" lang="ro">

<html>

<head>
<title>Easy and Simple Learning    </title>

<script language="javascript" type="text/javascript">

 function playSound(soundfile) 
{document.getElementById("dummy").innerHTML="<embed src=\""+soundfile+"\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";}

</script>

</head>

<body>

<span id="dummy"></span>

<a href="#" onclick="playSound('sound.mp3');"><img src="image.png" />    </a>

</body>

</html>`

PS:我正在使用Chrome,這可能是個問題嗎? 提前謝謝了。

在錨點()之后關閉標簽

跳過href =“#”,這將導致瀏覽器跳轉到不存在的命名錨點。 可能導致此閃爍。

改用這個

<a href="javascript:void(0);" onclick="playSound('sound.mp3');">
your label....
</a>
<span> <!-- missing ? -->

而不是使用a標簽,為什么不使用一個div

<div onclick="playSound('sound.mp3');" style="cursor: pointer;">
  <img src="image.png" />
</div>

這避免了必須覆蓋默認鏈接行為。 我還建議將JavaScript和CSS移到單獨的文件中,以使代碼更易於管理。

編輯-再試一次:

最初嘗試將音頻添加到頁面,並在單擊時觸發播放事件。

HTML:

<div onclick="playSound('myAudio');" style="cursor: pointer;">
  <img src="image.png" />
  <audio id="myAudio">
    <source src="sound.mp3" type="audio/mpeg" />
    Your browser does not support the audio element.
  </audio>
</div>

JS:

function playAudio(audioId) {
  var audio = document.getElementById(audioId);
  var isPlaying = !audio.paused && !audio.ended && 0 < audio.currentTime;

  if (isPlaying === false) {
    audio.play();
  } else {
    audio.pause();
  }
}

另外,再次單擊該圖像將暫停音頻。 JSFiddle

嘗試在onclick事件中添加“ return false”。 它告訴瀏覽器不必執行與onclick事件關聯的默認操作。 特別是,在onclick="playSound('sound.mp3');">更改為onclick="playSound('sound.mp3'); return false;">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM