【问题标题】:onclick JS event on a image map?图像地图上的onclick JS事件?
【发布时间】:2018-02-08 22:13:00
【问题描述】:

我已经在 stackoverflow 和网络上寻找了几个小时的答案。但是我尝试的所有答案都对我不起作用。

基本上,我想在图像地图上放置一个 onclick 事件。该事件是一个 java 脚本函数。当用户点击一个区域元素时,它会将编辑器上的文本下载为 word 文件。

为了说明我要解释的内容,这里是 https://jsfiddle.net/00bk1zad/ 和我制作的代码。我不知道我应该编辑什么才能让它工作。

谢谢!

代码:

function txtdownload() {
  console.log('called')
  var textToSave = document.getElementById("editor").value;
  var textToSaveAsBlob = new Blob([textToSave], {
    type: "application/msword"
  });
  var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
  var fileNameToSaveAs = "YouKtub.doc";
  var downloadLink = document.createElement("a");
  downloadLink.download = fileNameToSaveAs;
  downloadLink.innerHTML = "Download File";
  downloadLink.href = textToSaveAsURL;
  downloadLink.onclick = destroyClickedElement;
  downloadLink.style.display = "none";
  document.body.appendChild(downloadLink);
  downloadLink.click();
}
<div align=center>
  <textarea id="editor" wrap="PHYSICAL" name="q" rows="9"></textarea>
</div>

<div>
  <img src="https://image.ibb.co/eYKuFc/img.jpg" usemap="#map1Map" border=0>
</div>
<map name=map1Map> <area coords="268,46,47,113" href="#" onclick="txtdownload()"> </map>

【问题讨论】:

  • 这是什么destroyClickedElement??
  • 检查您的控制台,单击按钮时出现错误。
  • 你的事件实际上被调用了,但是,它在执行downloadLink.onclick = destroyClickedElement;这一行时崩溃了。这是什么destroyClickedElement?
  • 请使用提供的 jsfiddle 链接。当我单击按钮时,没有任何反应。这就是我要解决的问题。
  • 我真的不知道什么是 destroyClickedElement。我刚刚从另一个网站复制了整个 java 脚本代码并将其粘贴到我的 HTML 页面上。希望它会起作用,但它没有。

标签: javascript image


【解决方案1】:

我删除了downloadLink.onclick = destroyClickedElement; 并在末尾添加了document.body.removeChild(downloadLink);。因此,当您按下按钮并下载文件时,隐藏的链接将被破坏。 (在 Chrome 中工作)

更新:(现在可以在本地的 Firefox 或 JSFiddle 上使用 - stackoverflow 代码n-p 仍然不起作用)在区域标签中,我删除了 onclick="txtdownload()" 并将 href="#" 更改为 href="javascript:txtdownload()"。 JSFiddle:https://jsfiddle.net/00bk1zad/2/

将来,您可以使用 FileSaver.js。使用示例检查此链接:https://github.com/eligrey/FileSaver.js/

function txtdownload() {
	var textToSave = document.getElementById("editor").value;
  var textToSaveAsBlob = new Blob(
    [textToSave],
    {type:"application/msword"});
  var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
  var fileNameToSaveAs = "YouKtub.doc";
  var downloadLink = document.createElement("a");
  downloadLink.download = fileNameToSaveAs;
  downloadLink.innerHTML = "Download File";
  downloadLink.href = textToSaveAsURL;
  downloadLink.style.display = "none";
  document.body.appendChild(downloadLink);
  downloadLink.click();
  document.body.removeChild(downloadLink);
 }
<div align=center>
  <textarea id="editor" wrap="PHYSICAL" name="q" rows="9"></textarea>
</div>

<div>
  <img src="https://image.ibb.co/eYKuFc/img.jpg" usemap="#map1Map" border=0>
</div>

<map name=map1Map>
  <area coords="268,46,47,113" href="javascript:txtdownload()">
</map>

【讨论】:

  • 当我点击按钮时,什么也没有发生.. 下载没有开始。
  • 我更新了答案。在 JSFiddle 上与 Firefox 一起使用:jsfiddle.net/00bk1zad/2
  • 欢迎您!这种跨浏览器支持很神秘:-)
猜你喜欢
  • 2012-03-15
  • 2014-04-09
  • 2010-10-30
  • 2019-07-31
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
相关资源
最近更新 更多