2017-02-27 42 views
1

我有DIV是當用戶點擊使用AJAXtouchpdf:同一個文件被打開網址不同

,這是我的內容

function getHref(event,elem){ 
 
    \t event=event || window.event; 
 
    \t $.Event(event).preventDefault();  \t 
 
    \t $('body').on('click','a.view-pdf', function(){  
 
    \t \t var href=$(this).attr('href'); 
 
    \t \t //alert(href); 
 
    \t \t openNav(href); 
 
    \t });           \t  \t 
 
    \t document.getElementById("myNav").style.width = "100%";  \t \t   \t \t  \t 
 
    } 
 
    function openNav(href) { 
 
    \t $("#myNav").pdf({ 
 
    \t \t source: href, 
 
    \t }); 
 
    \t cross ='<a href="javascript:void(0)" class="closebtn" onclick=closeNav()>&times;</a>'; 
 
     \t $(".overlay").append(cross); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="col-lg-3 col-md-4 col-xs-6 thumb"> 
 
    <div class="image-div-conents"> 
 
    <h3 class="circle">MB</h3><div style="float:left" class="doc-name-date"> 
 
    <span class="bill-name">Tt</span> 
 
    <span class="bill-date">26 Feb, 2017 8:42 PM</span> 
 
    </div> 
 
</div> 
 
<a style="text-decoration:none" onclick="getHref(event,this);" class="view-pdf" href="http://link.com-A43713_20170226203413_1.pdf"> 
 
    <img class="img-responsive" src="http://link.com-A43713_20170226203509_6.jpg" alt="No Image" onerror="this.onerror=null;this.src=" text.png"="" ;"=""> 
 
    <div class="validitity"> 
 
    <span>Validitity:01 Mar, 2018 11:57 AM</span> 
 
    </div> 
 
</a>

頁面加載後動態添加其內容圖像覆蓋屏幕將打開,PDF文件將打開時,調試我發現我得到不同的值,但仍然相同的PDF文件打開覆蓋屏幕上。

回答

1

tl; dr不重複使用同一個DOM節點,動態創建一個。

出於某種原因,touchpdf(該庫)不允許重複使用相同的標記(最佳猜測)。

HTML

<div class="col-lg-3 col-md-4 col-xs-6 thumb"> 
    <div class="image-div-conents"> 
    <h3 class="circle">MB</h3><div style="float:left" class="doc-name-date"> 
    <span class="bill-name">Tt</span> 
    <span class="bill-date">26 Feb, 2017 8:42 PM</span> 
    </div> 
</div> 
<a style="text-decoration:none" class="view-pdf" href="http://link.com-A43713_20170226203413_1.pdf"> 
    <img class="img-responsive" src="http://link.com-A43713_20170226203509_6.jpg" alt="No Image" onerror="this.src=text.png"> 
    <div class="validitity"> 
    <span>Validitity:01 Mar, 2018 11:57 AM</span> 
    </div> 
</a> 

<!-- Add this to the main page, where you want to show the PDF --> 
<div id="overlay"></div> 

的JavaScript

function attachCloseBtn(){ 
    $("#overlay").prepend('<a href="javascript:void(0)" style="float: right;" class="closebtn" onclick=closeNav()>&times;</a>'); 
} 

function cleanUp(){ 
    $("#overlay").empty(); 
} 

function getFileName(pdfURI){ 
    if (typeof pdfURI === "string") 
    return pdfURI.split("/").reverse()[0].split(".")[0] 
    else 
    throw new TypeError("provide a URI!"); 
} 

window.closeNav function(){ 
    $("#overlay").empty().hide(); 
} 

$('body').on('click','a.view-pdf', function(e){ 
    e.preventDefault(); 
    openNav(e.currentTarget.href); 
});  

function openNav(pdfURI) { 
    // cleaning up first 
    cleanUp(); 

    // preparing dom environment 
    var fileName = getFileName(pdfURI); 
    attachCloseBtn(); 
    $("#overlay").append('<div id="'+fileName+'"></div>'); // <-- placeholder for PDF file 

    // opening pdf 
    $("#"+fileName).pdf({ // <-- do not forget # for the id! 
    source: pdfURI 
    }); 
    $("#overlay").show(); 
} 

老答案

我猜你從event=event || window.event;

越來越副作用

爲什麼不直接使用jQuery事件?我編輯了您的HTML標記,並刪除了onclickonerror事件偵聽器。 見this fiddle

HTML:

<a style="text-decoration:none" class="view-pdf" href="http://link.com-A43713_20170226203413_1.pdf"> 

的JavaScript:

$('body').on('click','a.view-pdf', function(e){  
    e.preventDefault(); 
    var href = e.currentTarget.href; 
    openNav(href); 
});               
function openNav(href) { 
    // added for debug 
    $("#output").append(href); 
} 
+0

都能跟得上得到同樣的問題。我用event = event || window.event;因爲e.preventDefault();在mozilla –

+0

不起作用,那麼你必須再次加載舊的pdf。你是否正確地將其刪除生命週期方法?如果你在另一個對象上使用猴子補丁,你是否在正確的對象上調用方法? –

+0

我不明白你能否詳細說明? –

相關問題