2016-01-14 10 views
2

Я пытаюсь добавить Disqus в свое приложение Ionic/Cordova. Я успешно получил виджет Disqus для отображения в шаблоне с использованием iframe, но если я нажму на виджет Disqus для входа в Disqus, чтобы добавить комментарий или посмотреть на вкладку сообщества Disqus, например, приложение переходит к прокручиваемую страницу Disqus, которая заполняет весь экран, и нет способа вернуться к приложению.Disqus in Cordova/Ionic app застрял на странице Disqus

Есть ли способ сделать страницу ее прокруткой и меньше, чем экран, чтобы пользователь мог вернуться в приложение.

код сервера

Disqus на статическом сервере:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
 
</head> 
 
<body> 
 
<div id="disqus_thread"></div> 
 
<script type="text/javascript"> 
 
\t var params; 
 
\t var disqus_url; 
 
\t var disqus_title; 
 
\t var disqus_shortname; 
 
\t var disqus_identifier; 
 
\t 
 
\t window.onload = function() { 
 
\t \t var match, 
 
\t \t \t pattern = /\+/g, 
 
\t \t \t search = /([^&=]+)=?([^&]*)/g, 
 
\t \t \t decode = function (s) { return decodeURIComponent(s.replace(pattern, " ")); }, 
 
\t \t \t query = window.location.search.substring(1); 
 
\t \t params = {}; 
 
\t \t while (match = search.exec(query)) 
 
\t \t params[decode(match[1])] = decode(match[2]); 
 
\t  
 
\t \t if (params["shortname"] === undefined || params["url"] === undefined || params["title"] === undefined) { 
 
\t \t \t alert("Required arguments missing"); 
 
\t \t } 
 
\t \t else { 
 
\t \t \t loadComments(params["shortname"], params["url"], params["title"], params["identifier"]); 
 
\t \t } 
 
\t }; 
 
\t 
 
\t function loadComments(shortname, url, title, identifier) { 
 
\t \t disqus_url = url; 
 
\t \t disqus_title = title; 
 
\t \t disqus_shortname = shortname; 
 
\t \t 
 
\t \t if (identifier !== undefined) 
 
\t \t \t disqus_identifier = identifier; 
 
\t \t else 
 
\t \t \t disqus_identifier = ""; 
 
\t 
 
\t \t (function() { 
 
\t \t \t var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = false; 
 
\t \t \t dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; 
 
\t \t \t (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
 
\t \t })(); 
 
\t } 
 
</script> 
 
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> 
 
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a> 
 
</body> 
 
</html>

В контроллере моего приложения у меня есть:

var disqus_title = "TEST"; 
 
    var disqus_identifier = '/movie/' + 0; 
 
    var disqus_url = 'http://example.com/movie/' + 0; 
 
    var url = "http://example.com/disqus.html?"; 
 
    $scope.disqusurl = url + "shortname=example&url=" + encodeURIComponent(disqus_url) + 
 
    "&title=" + encodeURIComponent(disqus_title) + "&identifier=" + encodeURIComponent(disqus_identifier); 
 
    $scope.disqusurl = $sce.trustAsResourceUrl($scope.disqusurl);

Соответствующая часть файла шаблона выглядит следующим образом:

<ion-content> 
 
    ... 
 
    <iframe style="max-height: 40%;" src="{{disqusurl}}"></iframe> 
 
    ... 
 
</ion-content>

EDIT Проблема, кажется, что веб-ссылки в виджете Disqus запускаются приложения. Если каким-то образом ссылки могут быть сделаны для открытия во внешнем браузере, все могут работать нормально, но я не могу понять, как сделать работу с HTML-кодом таким образом.

ответ

0

Вот что я хотел бы попробовать:

1) пытаются через CSS ездить Disqus, используя важный селектор

2) пытаются загрузить в содержание с AJAX

3) поиск и читать статьи, как это: https://help.disqus.com/customer/portal/articles/472096-using-disqus-in-mobile-apps

4) иметь iframe на странице вашего веб-сайта с disqus и сделать iframe меньше высоты страницы.

+0

Спасибо Глобли. (1) Каким CSS вы ссылаетесь ?, (2) Я использую метод, рекомендованный Disqus. Я не знаю о методе Ajax, который вы можете разработать? (3) Я прочитал эту статью, и в ней упоминаются проблемы, которые я имею в виду но не дает решений, (4) Я попытался ограничить высоту iframe (см. мой пример кода), но это, похоже, не работает. –

+0

Это были только общие предложения, которые я не заглядывал глубоко в это. В этом случае я бы попробовал 4. У вас есть страница на вашем веб-сайте, где встроен exqus iframe, а затем используйте iframe на этой странице, то есть iframe внутри iframe. Следовательно, disqus будет полностраничным внутри iframe. Это немного смущает, но я думаю, что это может сработать. –

+0

Я использую iframe на странице, но когда вы нажимаете на одну из ссылок Disqus (например, login), вы попадаете на другую страницу, которая является полной страницей, и именно там проблема заключается в том, что нет способа вернуться. –