115 lines
4.1 KiB
HTML
115 lines
4.1 KiB
HTML
<!doctype html>
|
|
<HTML style="width : 350; height: 300">
|
|
<HEAD>
|
|
<TITLE></TITLE>
|
|
<SCRIPT LANGUAGE=javascript>
|
|
<!--
|
|
// Though these should be constants, MSHTML does not support const as of 2024
|
|
var args = window.dialogArguments;
|
|
var copyStatusTimeout = 5000; // milliseconds before copy status message goes away
|
|
var copyEnabled = false;
|
|
|
|
function handleKeyPress(e) {
|
|
/*
|
|
This code should be effective for modern browsers (EdgeWebView2),
|
|
while also serving in old IE (MSHTML) contexts.
|
|
*/
|
|
e = e || window.event;
|
|
var key = e.key || e.keyCode;
|
|
if (key === 'Escape' || key === 27) { // code for escape
|
|
onCloseButtonPress();
|
|
} else if (e.shiftKey && e.ctrlKey && (key === 'C' || key === 67)) { // code for Ctrl+Shift+C
|
|
onCopyButtonPress();
|
|
}
|
|
}
|
|
|
|
function onCopyButtonPress() {
|
|
if (!copyEnabled) return;
|
|
// Copy code came from http://www.codestore.net/store.nsf/unid/DOMM-4QHQE8/
|
|
var rng = document.body.createTextRange();
|
|
rng.moveToElementText(messageDiv);
|
|
rng.scrollIntoView();
|
|
rng.select();
|
|
var success = rng.execCommand("Copy");
|
|
rng.collapse(false);
|
|
rng.select();
|
|
copyStatusDiv.innerHTML = '<p id="copyStatusText" style="font-weight:bold; text-align:center;"></p>';
|
|
if (success) { // Notify the user about the copy result
|
|
copyStatusText.innerText = args.item('copySuccessfulAlertText');
|
|
} else {
|
|
copyStatusText.innerText = args.item('copyFailedAlertText');
|
|
}
|
|
// Time out the user alert message
|
|
setTimeout(function() {
|
|
copyStatusDiv.innerHTML = '';
|
|
}, copyStatusTimeout);
|
|
}
|
|
|
|
function onCloseButtonPress() {
|
|
window.close();
|
|
}
|
|
|
|
function windowOnClick(e) {
|
|
// This is only supported in IE browsers.
|
|
if (!window.ActiveXObject) {
|
|
return;
|
|
}
|
|
var target = window.event.srcElement;
|
|
if (target.tagName == 'A') {
|
|
// If clicked on a link, open with the system default browser,
|
|
// instead of in a new IE window.
|
|
try {
|
|
new ActiveXObject('WScript.Shell').Run(target.href);
|
|
} catch (err) {
|
|
return; // fallback to standard behavior
|
|
}
|
|
return false; // cancels default processing
|
|
}
|
|
}
|
|
|
|
function windowOnLoad() {
|
|
if (args) {
|
|
document.title = args.item('title');
|
|
// We can't use innerText, even for text-only nodes,
|
|
// because of #12004.
|
|
messageDiv.innerHTML = args.item('message');
|
|
// If caller wants a close button
|
|
if (args.item('closeButtonText') != null) {
|
|
closeButton.innerText = args.item('closeButtonText'); // Assign the (translated) label
|
|
closeButton.style.display = 'inline'; // Display the button
|
|
buttonDiv.style.display = 'block'; // Display the button section
|
|
}
|
|
// If caller wants a copy to clip button
|
|
if (args.item('copyButtonText') != null) {
|
|
copyEnabled = true;
|
|
copyButton.innerText = args.item('copyButtonText'); // Assign the (translated) label
|
|
copyButtonSpan.style.display = 'inline'; // Display the button
|
|
copyStatusDiv.style.display = 'block'; // Display the copy status
|
|
buttonDiv.style.display = 'block'; // Display the section
|
|
if (args.item('copyButtonAcceleratorAccessibilityLabel') != null) { // If translated text for the accelerator is provided
|
|
copyButtonAcceleratorAccessibilityLabel.innerText = args.item('copyButtonAcceleratorAccessibilityLabel');
|
|
}
|
|
}
|
|
} else { // If args wasn't provided, we can do nothing. Just exit
|
|
window.close();
|
|
}
|
|
}
|
|
//-->
|
|
</SCRIPT>
|
|
</HEAD>
|
|
<body tabindex='0' id='main_body' style="margin:1em" onload="return windowOnLoad()" onkeydown="return handleKeyPress()" onclick="return windowOnClick()">
|
|
<div id="messageDiv"></div>
|
|
|
|
<!-- "tabindex" is needed to circumvent an old IE/MSHTML bug in the handling of aria-labelledby.
|
|
See: https://www.tpgi.com/aria-labelledby-aria-describedby-support-popular-windows-browsers/ -->
|
|
<span id="copyButtonAcceleratorAccessibilityLabel" style="visibility: hidden;" tabindex="-1"></span>
|
|
|
|
<div id="buttonDiv" style="display: none;"><hr>
|
|
<div id="copyStatusDiv" role="status" aria-live="polite"></div>
|
|
<span id="copyButtonSpan" style="display: none;">
|
|
<button id="copyButton" onclick="onCopyButtonPress();" aria-labelledby="copyButton copyButtonAcceleratorAccessibilityLabel"></button> </span>
|
|
<span><button id="closeButton" style="display: none;" onclick="onCloseButtonPress();"></button></span>
|
|
</div>
|
|
</body>
|
|
</html>
|