Как использовать window.open в onclick внутри каждого цикла - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь показать содержимое страницы в приложении PhoneGap. Это работает очень хорошо:

<a href="#" onclick="window.open('https://www.google.com', '_self ', 'location=yes');">google.com</a>

Когда я нажимаю на ссылку, Google загружается внутри приложения.

Я удаляю данные постов, используя WordPress Rest API. Для этого я использую это:

getPosts: function() {

        var rootURL = 'https://example.com/wp-json/wp/v2/posts/';

        $.ajax({
            type: 'GET',
            url: rootURL,
            dataType: 'json',
            success: function(data){

                $.each(data, function(index, value) {
                    console.log(value.featured_image);
                  $('ul.homepost-list').append('<li class="homepost-list__item">' +
                    '<a href="'+value.link+'">'+
                    '<img width="100" height="75" src="'+value.fimg_url+'" alt="'+value.title.rendered+'"/>'+
                    '<h3>'+value.title.rendered+'</h3>' +
                    '<p>'+value.excerpt.rendered+'</p>'+
                    '</a>'+
                    '</li>');
                    ;
                });
            },
            error: function(error){
                console.log(error);
            }

        });

    }

но при нажатии на сообщения он открывается в браузере. чтобы открыть его внутри приложения, я должен использовать функцию onclick следующим образом: <a href="#" onclick="window.open('https://www.google.com', '_self ', 'location=yes');">google.com</a>

Итак, я изменился так:

getPosts: function() {

        var rootURL = 'https://example.com/wp-json/wp/v2/posts/';

        $.ajax({
            type: 'GET',
            url: rootURL,
            dataType: 'json',
            success: function(data){

                $.each(data, function(index, value) {
                    console.log(value.featured_image);
                  $('ul.homepost-list').append('<li class="homepost-list__item">' +
                    '<a href="#" onclick="'+window.open(''+value.link+'', '_self ', 'location=yes')+'">'+
                    '<img width="100" height="75" src="'+value.fimg_url+'" alt="'+value.title.rendered+'"/>'+
                    '<h3>'+value.title.rendered+'</h3>' +
                    '<p>'+value.excerpt.rendered+'</p>'+
                    '</a>'+
                    '</li>');
                    ;
                });
            },
            error: function(error){
                console.log(error);
            }

        });

    }

Но теперь значение щелчка привязки равно NULL onclik null

Я думаю, это из-за синтаксической ошибки в этой строке '<a href="#" onclick="'+window.open(''+value.link+'', '_self ', 'location=yes')+'">'+

Как мне изменить эту синтаксическую строку, чтобы она заработала? Я знаю, что это простая синтаксическая ошибка, но я не мог ее понять.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Вам нужно поработать над тем, как добавлять строки и переменные, а также одинарные и двойные кавычки. Смотри скрипку здесь https://jsfiddle.net/designtocode/u3o57jr2/3/

onclick="'+window.open(''+value.link+'', '_self ', 'location=yes')+'">'+

Должно быть:

onclick="window.open(\''+value.link+'\', \'_self \', \'location=yes\')">

Это означает, что onclick и window.open должны передаваться как строки, а value.link должна быть переменной. Поскольку мы используем одинарные кавычки для экранирования кода javascript, нам нужно добавить \ перед одинарной кавычкой, если вам это нужно в виде строки.

Надеюсь, это имеет смысл и поможет вам в будущем.

0 голосов
/ 20 марта 2019

Вам нужно экранировать одинарные кавычки

window.open(\'+value.link+'\'
...