es nicht möglich ist (mit Javascript). Es gibt eine experimentelle Unterstützung für benutzerinitiierte Druckereignisse in modernen Browsern, aber diese are not cancelable ("einfache Ereignisse"), so dass die gesamte Seite immer noch gedruckt wird, selbst wenn Sie benutzerdefinierten Code einwerfen, um das Bild von Interesse zu drucken.
Angesichts dieser Einschränkung ist Ihre beste Wette wahrscheinlich, Benutzern eine große Schaltfläche anzubieten, die Ihre benutzerdefinierte Rahmen-Druckfunktion auslöst (siehe unten printContentFrameOnly
, feuern Sie ohne Argumente) und hoffe, dass sie die Schaltfläche anstelle von Strg-P verwenden werden .
Wenn es würde möglich sein, wäre dies der Weg, es zu tun (basierend auf this answer):
// listener is a function, optionally accepting an event and
// a function that prints the entire page
addPrintEventListener = function (listener) {
// IE 5.5+ support and HTML5 standard
if ("onbeforeprint" in window) {
window.addEventListener('beforeprint', listener);
}
// Chrome 9+, Firefox 6+, IE 10+, Opera 12.1+, Safari 5.1+
else if (window.matchMedia) {
var mqList = window.matchMedia("print");
mqList.addListener(function (mql) {
if (mql.matches) listener(); // no standard event anyway
});
}
// Your fallback method, only working for JS initiated printing
// (but the easiest case because there is no need to cancel)
else {
(function (oldPrint) {
window.print = function() {
listener(undefined, oldPrint);
}
})(window.print);
}
}
printContentFrameOnly = function (event) {
if (event) event.preventDefault(); // not going to work
window.frames['webcontent'].focus();
window.frames['webcontent'].print();
}
addPrintEventListener(printContentFrameOnly);
Ich war auf der Suche nach einer Javascript-Lösung, da CSS für mich nicht funktioniert. Dies als eine Antwort markieren. – Burjua
Vielen Dank. Für das, was es wert ist, stimme ich völlig zu, dass xDNP den Bounty Award verdiente und ich auch ihre Antwort auffrischte. – Julian