清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 1192|回复: 1
打印 上一主题 下一主题

Discuz与phpsso整合时无法同步登录:通过js load 另一个 script 文件导致的问题,phpsso documen ...

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2020-08-04 23:30:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    在 web 开发中,出于跨域同步、远程调用等目的,经常需要在网页中通过 script 加载另一段远程 script。
    最常用最简单的方法就是直接用 document.write 输出加载脚本的 HTML,如下:
    1. document.write('<script src="http://somehost/path/to/script.js" type="text/script"></' + 'script>');
    复制代码
    通常来说用这个方法是没有什么问题的,但是最近在帮人分析整合 phpcms 与 discuzx 同步登录时,发现在 discuzx 登录后无论如何也没能让 phpcms 同步登录。
    原因是 dz 的登录采用的是 ajax 方式,ucenter 返回的同步代码就是用上面方法向所有 APP 发起一次 JS 请求模拟登录。phpcms 自身又有一套 phpsso 的单点登录体系,它收到请求后又需要分发给更多采用 phpsso 的 APP,于是它又生成一堆如上方法的 script 输出给最终用户。
    但到了最终用户这儿,由于是 ajax 异步加载的,大概算是 BUG,再次输出的 document.write(‘<script..></script>’) 不执行,造成无法同步。
    目前的解决方法是在第二次需要加载 js 请求时,换用以下方式:
    1. var s = document.createElement('script');
    2. s.setAttribute("type","text/javascript");
    3. s.setAttribute("src", "http://somehost/path/to/script.js");
    4. document.body.appendChild(s);
    复制代码
    顺便提一下,曾经看到过文章说用 document.body.appendChild 在 IE 下有时会卡死,建议改用:
    1. document.getElementsByTagName("head")[0].appendChild(s);
    复制代码



    1. //解决二次<script>不执行的问题
    2. function format_dom($urls) {
    3.         $output = 'var s = document.createElement("script");s.setAttribute("type","text/javascript");';
    4.         foreach($urls AS $url) {
    5.                 $output .= 's.setAttribute("src", "'.addslashes(str_replace(array("\r", "\n"), array('', ''), $url)).'");document.getElementsByTagName("head")[0].appendChild(s);';
    6.         }
    7.         return $output;
    8. }
    复制代码
    OK.
    清泛网 - 专注IT技能提升
  • TA的每日心情
    晕~
    2023-12-12 16:07
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    5

    主题

    21

    帖子

    217

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    217
    QQ
    沙发
    发表于 2023-12-05 08:46:12 | 只看该作者
    有用,{:geiliv2:}
    平步青云
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-11-22 11:50 , Processed in 0.022040 second(s), 37 queries .