Php 将jQuery Mobile与类似Facebook和Twitter的Tweet集成

Php 将jQuery Mobile与类似Facebook和Twitter的Tweet集成,php,jquery,cakephp,jquery-mobile,Php,Jquery,Cakephp,Jquery Mobile,我正在尝试将JQM与类似Facebook和Twitter的Tweet集成到我的第二个页面上。第二个页面由第一个页面使用锚标记加载,然后使用AJAX请求加载第二个页面 问题是Facebook和Twitter的javascript脚本在加载第二个页面时没有加载 我可以关闭AJAX,但我不希望将此功能作为一种权衡 在JQM上的AJAX请求之后,有没有办法在特定页面上重新加载js脚本?(我认为这应该类似于jquerylive函数) 我使用的是Cakephp 2.0.4您使用的是正确的页面标准吗?您需要在

我正在尝试将JQM与类似Facebook和Twitter的Tweet集成到我的第二个页面上。第二个页面由第一个页面使用锚标记加载,然后使用AJAX请求加载第二个页面

问题是Facebook和Twitter的javascript脚本在加载第二个页面时没有加载

我可以关闭AJAX,但我不希望将此功能作为一种权衡

在JQM上的AJAX请求之后,有没有办法在特定页面上重新加载js脚本?(我认为这应该类似于jquerylive函数)


我使用的是Cakephp 2.0.4

您使用的是正确的页面标准吗?您需要在
datarole=“page”
元素中加载脚本,因为这是JQM框架从AJAX请求中提取的内容

<div data-role="page"> 
    <!-- Scripts here -->
</div> 


文档-

这是解决方案,在第二页div中创建一个iframe。 iframe的src是显示tweet和like的页面

这样,您就不必重新加载js,因为iframe将重新加载喜欢和推文的代码


我希望它能解决你的问题。

我认为有两种解决办法。第一种方法是通过在超链接中添加“data Ajax=“false”来关闭链接页面的Ajax页面转换。这可能适合您,也可能不适合您,这取决于您是否希望在“后退”按钮上保持相同的上下文—您通常会这样做,因此您可以尝试第二种解决方案

当我在一个页面上有多个Like按钮时,我会使用这个按钮:当创建页面时(钩住JQMobile page create事件),找到所有的fb Like按钮并触发对它们的处理。我不能给出一个完整的示例,但类似这样的示例(请注意,我假设您使用的是XFBML格式“”):

  • 使用jQuery选择器查找所有类似fb的元素
  • 使用以下方法触发它们:

    $('fb\\:like').each(function() { FB.XFBML.parse(this); });
    
  • 这将导致它们全部像按钮一样展开为完整

    请注意,我还没有测试此文件的选择器部分,但我使用的是xfml.parse位,它可以工作。我还没有为Twitter做过同样的事情,但我很想看看等效的代码


    多次运行此代码是安全的,因为一旦对其进行解析,fb:like元素将不再出现在HTML中。

    我遇到了同样的问题,我通过以下方式解决了它:

    1:在html中,在页面div中创建标记或id

    <div data-role="page" class="page-class" id="page-id">
    
    我尽可能少地修改了twitter提供的代码。也许有更好的方法可以做到这一点

    对于Facebook,我认为同样的方法也可以使用


    希望它能帮助那些面临同样问题的人。

    在tweet按钮嵌入代码中,有一个if语句检查id为“twitter wjs”的元素。在页面加载之前删除此元素可以使tweet按钮正常工作

    $(document).bind('pagebeforeload', function(){
        $('#twitter-wjs').remove();
    });
    
    这修复了类似facebook的按钮。我不完全确定它为什么会工作,但它与Facebook的API有关

    $(document).bind('pageshow', function() {
        try{
            FB.XFBML.parse();
        } catch(err){}
    });
    

    好的,太好了。我已经在div中添加了js,data role=page,它正在工作,谢谢!然而,现在的问题是,当我第一次加载它时,当我转到另一个页面,然后再回到这个页面时,它就不再工作了……JQM框架有一系列用于页面加载和初始化的事件,等等。如果您需要运行任何JS,您需要将代码放在那里。我根据JQM文档尝试了pageinit函数,但在第一次运行后它仍然没有加载脚本…这可能是因为JS仅在第一次加载时才执行。FB和Twitter脚本可能正在检查对象是否已加载。您可以查看它们各自的API,看看需要调用什么来重新初始化对象。另外,确保测试页面初始化是否在正确的时间触发。您不希望在加载显示控件的DOM元素之前触发它(如果我没记错的话)
    $(document).bind('pageshow', function() {
        try{
            FB.XFBML.parse();
        } catch(err){}
    });