我正在尝试创建一个小书签,允许用户使用'j'和'k'浏览一些webcomics或一系列文章。我将代码基于现有的bookmarklet转到“下一页”或“上一页”。
(function() {
var newWindow = window.open('about:blank', '_blank');
newWindow.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"><html><head><title>' +
document.title + '</title></head><frameset><frame src="' + location.href + '"></frameset></html>');
newWindow.document.close();
newWindow.document.getElementsByTagName('frame')[0].contentDocument.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == 'number') ? e.which : e.keyCode;
if (charCode) {
alert(charCode);
var frame = newWindow.document.getElementsByTagName('frame')[0];
var document = frame.contentDocument
if (String.fromCharCode(charCode) == 'j') {
z = document.getElementsByTagName('link');
for (i = 0; a = z[i++];) {
if (a.rel == 'previous') {
frame.src = a.href;
return;
}
}
m = frame.src.match(/^(.+\D)(\d+)(\D*)/);
if (m) {
s = '' + (1 * m[2] - 1);
while (s.length < m[2].length) s = '0' + s;
frame.src = m[1] + s + m[3];
}
} else if (String.fromCharCode(charCode) == 'k') {
z = document.getElementsByTagName('link');
for (i = 0; a = z[i++];) {
if (a.rel == 'next') {
frame.src = a.href;
return;
}
}
m = frame.src.match(/^(.+\D)(\d+)(\D*)/);
if (m) {
s = '' + (1 * m[2] + 1);
while (s.length < m[2].length) s = '0' + s;
frame.src = m[1] + s + m[3];
}
}
}
}
})()
目前,我正在尝试打开一个新窗口并使用一个框架。 onkeypress函数是不分配,但我认为这只是因为页面在尝试时没有加载,因为当我稍等一下并尝试从第一页的JS控制台分配它时,有用。我认为等待负载完成就足够了(我会尝试添加它,我只是JS的初学者)。
问题是当帧的src改变时,onkeypress函数会丢失。我该如何解决这个问题?
我想我应该在窗口上使用一些监听器,但是如何?
答案 0 :(得分:0)
解决了!
out2