因此,我有一些代码可使网页自动水平滚动,这在创建网页时有效,但是当我尝试打开现有网页然后运行脚本时,什么也没发生,有人可以解释一下我需要确实,我只想能够打开脚本,然后再打开网页并开始来回滚动,如果有帮助,它可以在canban板上显示不同的工作项。
这是我到目前为止所拥有的:
<script>
window.open("https://www.bbc.co.uk/news");
var scrollWanted = true;
var scrollbarPosition = 0;
var pageWidth = getWidth();
function scrollWin()
{
var scrollDirection = 'Right';
var pageWidth = getWidth();
scrollWanted = true;
function f()
{
if(scrollWanted)
{
if(scrollbarPosition == 0)
{
scrollDirection = 'Right'
}
if(scrollbarPosition == 100)
{
scrollDirection = 'Left';
}
if(scrollDirection == 'Right')
{
window.scrollTo(window.scrollX + 1, 0);
scrollbarPosition++;
}
if(scrollDirection == 'Left')
{
window.scrollTo(window.scrollX - 1, 0);
scrollbarPosition--;
}
setTimeout( f, 30 );
//Refresh
//if( scrollX == 50 )
//{
// window.scrollTo(0,0);
// location.reload();
//
// setTimeout( f, 3000 );
// scrollWin();
//}
}
}
f();
}
function getWidth() {
return Math.max(
document.body.scrollWidth,
document.documentElement.scrollWidth,
document.body.offsetWidth,
document.documentElement.offsetWidth,
document.documentElement.clientWidth
);
}
</script>
我知道英国广播公司(BBC)的网站并没有水平延伸,但是我想不出任何有atm的网站。
谢谢! 凯尔。
答案 0 :(得分:1)
据我所知,您想通过JavaScript打开某个网站example.com
,其内容可以水平滚动。
您需要将新打开的窗口分配给变量,以便可以在打开后对其进行操作。
var newWindow = window.open('http://example.com');
要进行操作,请像下面这样使用此newWindow
变量作为window
对象:
newWindow.scrollTo(newWindow.scrollX + 1, 0);
此外,您的getWidth()
函数需要像这样更改:
function getWidth(win) {
return Math.max(
win.document.body.scrollWidth,
win.document.documentElement.scrollWidth,
win.document.body.offsetWidth,
win.document.documentElement.offsetWidth,
win.document.documentElement.clientWidth
);
}
您可以猜测,scrollWin()
函数需要以相同的方式进行更改。
如果您打开的域与运行javascript的域不同,则window
返回的window.open()
对象将不可访问。
也就是说,如果您的JavaScript加载在yoursite.com
之类的网站上,并且您打开了var newWindow = window.open('http://example.com')
之类的另一个域,则无法访问newWindow.document
对象,或该window
对象的任何属性,即您的getWidth()
函数将失败,scrollWin()
也将失败。
例如,请在此页面上的控制台中尝试以下代码:
var newWindow = window.open('http://google.com');
alert(newWindow.body.scrollWidth);
将引发以下错误:
Uncaught DOMException: Blocked a frame with origin "https://stackoverflow.com" from accessing a cross-origin frame.
如果您在与站点相同的域中使用它,则需要考虑以下因素:
var newWindow = window.open('http://yoursite.com')
之后,如果您像newWindow.document.documentElement.offsetWidth
那样立即访问它,则可能会得到不需要的结果,因为新窗口的内容可能仍在加载< / strong>。
因此,if(newWindow.document.readyState === 'complete')
检查可能对以后运行滚动代码很有帮助。
我已经尽力澄清了,随时要求澄清。