2017-09-04 6 views
1

ブラウザの新しいタブでPDFを開くために使用している機能があります。ユーザーは、開かれたものとは別のページに移動することもできますので、ページには、機能によって更新することができます。最新のページ番号を新しいブラウザのタブで開いた

openpdf: function(url, page, pageCount){ 
    try { 
    console.log('the page count is ' + pageCount); 
    var page = new Number(page) + new Number(pageCount);   
    if (mobileAndTabletcheck()){ 
     console.log('mobile detected'); 
     return window.open(url + '#page' + page, 'somename'); 
    } 
    console.log('no mobile detected') 
    return window.open(url + '#page=' + page, 'somename'); 
    } 
    catch(e){ 
    console.log(e) 
    } 
}, 

私がいる問題は、ユーザーが新しいページに移動するためにクリックしたときに、 pdfのURLは正しいページ番号で更新されますが、ビューアは最初に開いたページにとどまります。

URLの更新時に現在のページの更新方法を知っている人はいますか?

+0

あなたの質問はちょっと混乱しています。とにかく私はそれに答えました。それがあなたが望むものでない場合は、あなたの質問をより明確にしてください。 –

+0

あなたの質問によると、openpdf関数はurlが変更された後に呼び出されないことを意味しますか? –

答えて

2

開いているドキュメントを追跡する場所として、ローカルストレージを使用することができます。 pdfビューアとメインページは同じドメインにとどまっていると私は信じています。だからあなたはこのようなことを試みるかもしれません。

openpdf: function(url, page, pageCount){ 
try { 
console.log('the page count is ' + pageCount); 
var page = new Number(page) + new Number(pageCount);   
if (mobileAndTabletcheck()){ 
    console.log('mobile detected'); 
    return window.open(url + '#page' + page, 'somename'); 
} 
console.log('no mobile detected') 
return window.open(url + '#page=' + page, 'somename'); 
} 
catch(e){ 
console.log(e) 
} 
var openedLinks = JSON.parse(localStorage.getItem("links")); 
openedLinks.push("Your URL here"); 
localStorage.setItem("links", JSON.stringify(names)); 
} 

pdfビューアページで、ローカルストレージを更新するだけです。

onpageChanged : function(){ 
    var openedLinks = JSON.parse(localStorage.getItem("links")); 
    var index = items.indexOf("Your current Url"); 
    if (index !== -1) { 
     openedLinks[index] = "Your updated URL"; 
    } 
    localStorage.setItem("links", JSON.stringify(names)); 
    } 

最後にメインページに、開いているリンクを追跡するためのタイマーのようなものを使用します。

setInterval(function(){ 
    var openedLinks = JSON.parse(localStorage.getItem("links")); 
    $("#someDiv").html(openedLinks.join(",")); 
    },1000); 

これはうまくいきます。コードはテストされておらず、エラーが発生する可能性があります。

関連する問題