Перенаправление и выполнение JavaScript [дубликат]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

3
задан Skylark 27 March 2015 в 18:26
поделиться

2 ответа

Короче говоря, вы не можете делать то, что вы просите. Новое окно изолировано. Он может запускать только javascript, указанный в его собственном html-файле.

Одно из возможных решений, которые могут помочь вам в использовании postMessage. Тем не менее, чтобы сделать это, страница приема должна прослушивать потенциальные сообщения. https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Альтернативой будет включение параметра запроса в URL-адрес и проанализируйте этот параметр на стороне клиента в новом окне и выполните действие, основанное на значении параметра.

3
ответ дан bhspencer 25 August 2018 в 16:34
поделиться

Я точно не знаю, что ваш вариант использования, но расширения браузера позволяют запускать произвольный код JavaScript на веб-страницах (например, content_scripts для Chrome).

Недостатком является то, что пользователю необходимо установить расширение.

0
ответ дан marcelocra 25 August 2018 в 16:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: