Функция нажатия триггера jquery не работает при загрузке страницы

Я хочу сделать клик кликабельным при загрузке страницы. (который загрузит изображение для меня). Я использую html2canvas

вот мой якорный тег

<?php
$id = $_GET['order_number'];
?>
<a id="btn-Convert-Html2Image" href="#">Download</a>

вот код JS, который находится в конце страницы

 $(document).ready(function(){

    var element = $("#html-content-holder"); // global variable
    var getCanvas; // global variable

    html2canvas(element, {
        onrendered: function (canvas) {
            $("#previewImage").append(canvas);
            getCanvas = canvas;
        }
    });
   // $("#btn-Convert-Html2Image").on('click', function () {

        var imgageData = getCanvas.toDataURL("image/png");
        // Now browser starts downloading it instead of just showing it
        var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream");
        $("#btn-Convert-Html2Image").attr("download", "<?php echo 'product_label_'.$id ?>.png").attr("href", newData);
   // });
    jQuery('#btn-Convert-Html2Image').click();

});

Я знаю, что триггерная функция jquery делает это, но она не работает для меня

Я прокомментировал функцию

$("#btn-Convert-Html2Image").on('click', function () {

который работает нормально, когда я нажимаю на него. После комментирования этой строки она должна работать, так как код в этой функции теперь document ready функция.

Не знаю, где я делаю неправильно

2 ответа

Попробуйте создать функцию и вызвать ее на странице документа готово и нажмите обработчик

Пожалуйста, обратитесь к структуре вашего кода ниже для примера

$(document).ready(function(){
    var element = $("#html-content-holder"); // global variable
    var getCanvas; // global variable

    html2canvas(element, {
        onrendered: function (canvas) {
            $("#previewImage").append(canvas);
            getCanvas = canvas;
        }
    });

    $("#btn-Convert-Html2Image").on('click', downloadImage);
    downloadImage()
});

function downloadImage{
        var imgageData = getCanvas.toDataURL("image/png");
        // Now browser starts downloading it instead of just showing it
        var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream");
        $("#btn-Convert-Html2Image").attr("download", "<?php echo 'product_label_'.$id ?>.png").attr("href", newData);
}

Почему бы вам не попробовать сделать такую ​​функцию

function ClickFunction() {

    var imgageData = getCanvas.toDataURL("image/png");
    // Now browser starts downloading it instead of just showing it
    var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream");
    $("#btn-Convert-Html2Image").attr("download", "<?php echo 'product_label_'.$id ?>.png").attr("href", newData);
};

$("#btn-Convert-Html2Image").on("click",ClickFunction) 

посмотрите простой пример ниже

function ClickFunction() {

  $("div").css({
    "background-color": "blue"
  })

}
$("button").on("click", ClickFunction)
div {
 height:100px;
 width:100px;
 background-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click me</button>
<div>

</div>

Другие вопросы по тегам