2

私はクロム拡張機能を作っています。そして、scrollTopにいくつか問題があります(これが「スクロールの高さを取得する」ことを願っています!)。

最初: 構造: マニフェスト、HTML ページ、JavaScript、および画像があります。

2番目: 狙います。一番上に移動するよりも一番下までスクロールして、再起動して一番下までスクロールしようとしています..ループ。マニフェストでは、私はこれを持っています:

{
 "background": {
       "page": "scroll.html"
 },
 "browser_action": {
       "default_icon": "icon.png",
       "default_title": ""
 },
 "content_scripts": [ {
       "js": [ "scroll.js" ],
       "matches": [ "http://*/*", "https://*/*" ]
 } ],
 "description": "Auto Scroll. UpDownUp!",
 "icons": {
       "128": "icon.png",
       "48": "icon.png"
 },    
 "manifest_version": 2,    
 "name": "Auto Scroll, UpDownUp",    
 "permissions": [ "tabs", "http://*/*", "https://*/*" ],    
 "version": "0.2.3"
}

ご覧のとおり、ポップアップ HTML はありません。

私のhtmlページで私はこれを持っています:

<html>
<head>
<title>Auto Scroll</title>
</head>
<body >
<script src="scroll.js"></script>
</body> 
</html>

私の scroll.js には、スクロールを開始したり、スクロールを高速化するための関数がいくつかあります。しかし、そのすべてのコード (164 行) を引用する必要はありません。

私は単にたくさんのゴミを持っていますが、最後にはこの単純なことだけを行います:

chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop+=1;'});

私の拡張機能は「機能します」。しかし、私はやりたいことをすべてやったわけではありません:

この拡張機能はダウンするだけです (ダウンします!!)。ページの一番下にいるときに、拡張機能が実行されるようにしたい:

chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop=0;'});

そして私は考えました:

1)スクロールの最大高さを取得し、スクロールトップで確認し、同じ場合はそのコードを使用します。そうする場合、これらの値が常に(!!)等しいかのように、拡張機能は常に(少し下にスクロールした後)上に表示されます。

if(document.body.scollTop==document.body.Height)
{
chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop=0;'});
}

これは最初の試行の結果です...しかし、うまくいきません。

2) var y=document.body.scrollTop --> scroll --> z=document.body.scrollTop. y==z の場合、私は下にいて、上に移動します...これは機能しません。y と z は常に等しい!!!

使用するたびにアラート(値)を使用しました

chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop+=1;'});

として設定され

alert(document.body.scollTop);

とポップアップが「0」で表示されます。いつも...ポップアップを閉じて、拡張機能をもう少し下にスクロールすると、ポップアップが表示され、再び0になります!

わかりました...私は私のせいです!?

私は考えを持っています:私のjavascriptはバックグラウンドページによってロードされ、javascriptはブラウザのページに作用します.scrollTopコマンドはバックグラウンドページの高さを与えてくれます. 「アクティブな」ページの最後で停止して「トップに移動」機能を実行する方法を見つけるのを手伝ってくれませんか!?

編集:

何か見つけた、これ使ったら

chrome.tabs.getSelected(null, function(tab) { 
    alert(tab.url);
})

ウィンドウが表示され、acqual タブの URL が表示されます。これを見ると、高さがタブのプロパティであることがわかります。

    chrome.tabs.getSelected(null, function(tab) { 
    alert(tab.height);
})

しかし、ウィンドウがポップアップして「未定義」と表示されます....実際のタブスクロール位置を取得するために何をしなければならないか本当にわかりません。

4

3 に答える 3

1

バックグラウンド ページのコードと実際の Web ページのコードが混在しているようです。

1 は、実際の Web ページ (条件) ではなくバックグラウンド ページの値をクエリしてから、実際の Web ページでコードを実行する (scrollTop を設定する) ため、確実に機能しません。

2について - あなたがそこに何を意味しているのかわかりません...

バックグラウンド ページから実際の Web ページ内で JavaScript を実行する適切な方法は、chrome.tabs.executeScript. または、コンテンツ スクリプトを使用することもできます(背景ページさえ必​​要ない場合もあります)。

バックグラウンド ページではなく実際の Web ページですべてのコード (実際の Web ページの内容を照会および変更するためのもの) を実行することを確認したら、通常、コードは機能するはずです。

于 2013-10-21T07:22:44.950 に答える
1

やっと解決。私は2つの機能ですべてを行うことができました:

function scrolla(){
    chrome.tabs.executeScript({code: 'var x= document.body.scrollTop; document.body.scrollTop+=1; var y=document.body.scrollTop; if(x==y){document.body.scrollTop=0;}'});
}

chrome.browserAction.onClicked.addListener(function(tab) {

      var start = setInterval(function(){scrolla()},10);

    });

これにより、ページが最後までスクロールされ、上から再開されます。私はこれを非常に困難にしました!ハァハァ解決!!!!

于 2013-10-22T22:55:10.393 に答える