Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Facebook共享对话框未显示正确的内容_Javascript_Jquery_Facebook - Fatal编程技术网

Javascript Facebook共享对话框未显示正确的内容

Javascript Facebook共享对话框未显示正确的内容,javascript,jquery,facebook,Javascript,Jquery,Facebook,更新: 我通过使用修复了https和http协议不匹配错误,但仍然出现以下错误: 未捕获的SecurityError:未能从“HTMLIFrameElement”读取“contentDocument”属性:阻止源代码为“”的帧访问源代码为“”的帧。正在访问的框架将“document.domain”设置为“facebook.com”,但请求访问的框架没有设置。两者必须将“document.domain”设置为相同的值才能允许访问 错误消息是chrome独有的,但弹出消息的行为与调试器中显示的内容不

更新: 我通过使用修复了https和http协议不匹配错误,但仍然出现以下错误:

未捕获的SecurityError:未能从“HTMLIFrameElement”读取“contentDocument”属性:阻止源代码为“”的帧访问源代码为“”的帧。正在访问的框架将“document.domain”设置为“facebook.com”,但请求访问的框架没有设置。两者必须将“document.domain”设置为相同的值才能允许访问

错误消息是chrome独有的,但弹出消息的行为与调试器中显示的内容不匹配,在所有浏览器中都是一致的


我正在尝试让我的网站的Facebook共享按钮插件提示用户正确的共享窗口属性。我在我的网站上有一个按钮(我目前使用的登台版本可以在这里找到:),上面写着“共享此计划”,单击该按钮后,将生成一个唯一的共享按钮

下面是我需要的FB javascript SDK的代码,按照说明将其放在打开的body标记后面:

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : 'myAppIDGoesHere',
            xfbml      : true,
            version    : 'v2.5'
        });
    };

    (function(d, s, id){
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>

window.fbAsyninit=函数(){
FB.init({
appId:'MyAppIDGoesher',
xfbml:是的,
版本:“v2.5”
});
};
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
下面是“共享此计划”按钮的代码:

// When 'Share This Schedule' is clicked:
$('#share_schedule').click(function(){
    html2canvas(document.body).then(function(canvas) {
        //document.body.appendChild(canvas);
        var imgDataUrl = canvas.toDataURL();
        $('head').append("<meta property='og:image' content='" + imgDataUrl + "' />");
    });

    // If it is not the first time being clicked:
    if ($('#share_url_ul').children().length >= 1){
        $('#share_url_ul').empty();
    }
    $.ajax({
        method: "POST",
        url: "/share/",
        data: JSON.stringify(localStorage),
        contentType: "application/json; charset=utf-8",
        dataType: "text",
        success: function(response){
            var shared_url = document.createElement('a');
            $(shared_url).css('display', 'block');
            $(shared_url).attr('href', window.location.href + 'shared/' + response);
            $(shared_url).attr('id', 'share_link');
            shared_url.innerHTML = window.location.href + 'shared/' + response;
            $('#share_url_ul').append(shared_url);

            $('#fb_share_btn').attr('data-href', window.location.href + 'shared/' + response);

            FB.XFBML.parse();
        },
        error: function(error){
            console.log(error);
        }
    });
});
//单击“共享此计划”时:
$('share#u schedule')。单击(函数(){
html2canvas(document.body).then(函数(canvas){
//document.body.appendChild(画布);
var imgDataUrl=canvas.toDataURL();
$('head')。追加(“”);
});
//如果不是第一次单击:
if($('#share_url_ul').children().length>=1){
$('share_url_ul').empty();
}
$.ajax({
方法:“张贴”,
url:“/share/”,
数据:JSON.stringify(localStorage),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“文本”,
成功:功能(响应){
var shared_url=document.createElement('a');
$(共享url).css('display','block');
$(共享url.attr('href',window.location.href+'shared/'+响应);
$(shared_url).attr('id','share_link');
shared_url.innerHTML=window.location.href+'shared/'+响应;
$('#share_url_ul')。追加(shared_url);
$('fb#u share_btn').attr('data-href',window.location.href+'shared/'+response);
FB.XFBML.parse();
},
错误:函数(错误){
console.log(错误);
}
});
});
和我的html:

<head>
  .
  .
  .
    <!-- Facebook -->
    <meta property="og:url"                content="http://infinite-brushlands-3960.herokuapp.com/" />
    <meta property="og:type"               content="website" />
    <meta property="og:title"              content="My Schedule on Serif" />
</head>

.
.
.
当我按照指示转到时,我会看到我想要看到的内容,并具有正确的提示属性:

但在实际的网站上,我看到的不是:

为什么存在这种差异?

其他信息:

我有一种感觉,这可能与我在控制台加载时收到以下消息有关:

未捕获的SecurityError:未能从“HTMLIFrameElement”读取“contentDocument”属性:阻止源代码为“”的帧访问源代码为“”的帧。请求访问的帧具有“http”协议,被访问的帧具有“https”协议。协议必须匹配


我也尝试过使用FB.ui而不是共享插件,但它只会打开一个弹出窗口,其中包含上述错误。

如果我正确理解您的用例,您希望单独共享每个计划,对吗

当前,
og:url
值指向您的主页()。这将导致打开的图形刮板(和共享对话框刮板)跟随该url,因为它被认为是规范url。我建议在那里使用每个时间表的url

结合这一点,打开的图形数据应始终是最新的