获取<embed />标记中的元素

时间:2018-04-23 12:16:30

标签: javascript html pdf

我是Javascript的初学者,我正试图从embed标签中获取一个元素。此embed标记包含pdf。 我想从pdf查看器中获取“下一页”按钮,并模拟对它的点击,以便自动滚动到pdf的下一页。

我的HTML代码是这样的(非常简化):

<html>
  <body>
    <div id="display-zone">
      <embed id="myPdf" src="./myPdf.pdf">
        #document
          <html>
            <body>
              <!-- The button I want to get in my JavaScript -->
              <button id="next" class="toolbarButton pageDown"></button>
            </body>
          </html>
        </embed>
      </div>
    </body>
  </html>

我的JS代码在网页上打印pdf查看器:

affichage.innerHTML = "<embed class=\"media\" id=\""+ongletsMedias[i].firstChild.data+"\" src= \""+ongletsMedias[i].firstChild.data+"\" width= \"1000\" height= \"800\">";
        // ongletsMedias[i].firstChild.data equals to "myPdf"
        t = 5000; // time before starting pdfDefile()
        setTimeout(pdfDefile,t,ongletsMedias[i].firstChild.data,i,1); //call the function to scroll pdf pages

最后我的函数pdfDefile()我正在调用以滚动pdf页面:

function pdfDefile(dir,i,page) {
var xhttp = new XMLHttpRequest();
var t = 0;
xhttp.onreadystatechange = function() {
  var checkbox = document.getElementById('checkbox');
  if (this.readyState == 4 && this.status == 200 && checkbox.checked) {
    document.getElementById("span").innerHTML = this.responseText; // display the number of pages of my pdf
    var t = 5000;
    if (page < parseInt(this.responseText)) { //test for recursive call
      /*HERE is where I want to get the "next" button */
      setTimeout(pdfDefile,t,dir,i,page+1);// recall this function while there is a next page to display
    } else {
      setTimeout(jouerMedia,t,i+1);// call the main fuction, no problem here
    }
  }
};
xhttp.open("GET", "nbPagesPDF.php?pages="+dir, true);
xhttp.send();

}

我已经查看了一个现有主题(Get element in embed tag),但我无法在我的JS中使用它。

所以,请你能帮助我再次使我的代码变得更好(可能是;-))?

此致

1 个答案:

答案 0 :(得分:0)

尝试

var embed = document.getElementById('myPdf');
// Wait for document to load inside embed element
embed.on('load', function() {
    embed.getElementById('next').click();
});

(我在这个例子中使用jQuery添加事件监听器,不确定你是否在项目中使用它?)

如果没有jQuery,你可以这样做:

var embed = document.getElementById('myPdf');
embed.onload = function() {
    embed.getElementById('next').click();
};

您可能无法触发该按钮上的点击事件,因为通常必须采取用户操作来触发来自js的点击。