Hello Stackoverflow社区,在过去的几天里,我一直在为以下问题而苦恼。我浏览了几十个Stack问题、开发博客和向同事提问,但我仍然停滞不前。我不得不在这里问一个问题。问题出在哪里?
我正在用Java将几个Base64编码的图像添加到HTML测试执行报告中。我想打开点击他们在新的选项卡/弹出窗口的全尺寸。这是代码:
String Base64StringofScreenshot = "data:image/png;base64," + Base64.getEncoder().encodeToString(data);
return "<br><a href='' onclick='openImage()'><img src=" + Base64StringofScreenshot
+ " style='height:200px; width:350px; padding:0;'></img></a>"
+ "<script>"
+ "function openImage() {var newTab = window.open(); "
+ "newTab.document.body.innerHTML = "<img src='" + Base64StringofScreenshot
+ "' style='max-height: 100%; max-width: 100%'>";rn"
+ " return false; }rn"
+ "</script>";
我在这里做了一些自定义格式,所以在复制时可能无法完美工作(错过了"一两个"(。
问题是,无论我点击哪个图像,都会打开最新的图像,并重新加载HTML页面我认为JS函数中必须添加一个参数,它每次执行都会设置正确的img源。不幸的是,这远远超出了我在Java字符串中处理JS脚本的能力。
我恳请您帮助我正确实施,并帮助我理解我做错了什么。
当按下人民币并选择";在新窗口中打开图像"-右侧图像打开,页面不重新加载
如果您遍历图像或有多个图像要返回,您可以将onclick触发器添加到img标签中
String Base64StringofScreenshot = "data:image/png;base64," + Base64.getEncoder().encodeToString(data);
return "</br><img src="" + Base64StringofScreenshot + "" onclick="debugBase64("" + Base64StringofScreenshot + "")">"
在页面的末尾,在放置图像的地方,写下以下脚本:
<script>
function debugBase64(base64URL){
var win = window.open();
win.document.write('<iframe src="' + base64URL + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');
}
</script>
它防止";不允许将顶部框架导航到数据URL:";Chrome浏览器中的错误(这是安全更新(。在其他浏览器中,您可以使用-"onclick="window.open(this.src)"
openImage
函数。我已经删除了链接,并添加了一个事件侦听器来侦听图像上的点击,这应该会在不重新加载的情况下调用您的函数。这是可选的,但在不再需要事件侦听器时,在某个时刻删除它是一种很好的做法。
String Base64StringofScreenshot = "data:image/png;base64," + Base64.getEncoder().encodeToString(data);
return "<br><img id="myImage" src=" + Base64StringofScreenshot
+ " style='height:200px; width:350px; padding:0;'></img>"
+ "<script>"
+ "let myImage = document.getElementById("myImage");"
+ "myImage.addEventListener("click", openImage, false);"
+ "function openImage() {var newTab = window.open(); "
+ "newTab.document.body.innerHTML = "<img src='" + Base64StringofScreenshot
+ "' style='max-height: 100%; max-width: 100%'>";rn"
+ " return false; }rn"
+ "</script>";