【问题标题】:What are these Google-calendar events from?这些 Google 日历活动来自什么?
【发布时间】:2015-08-29 18:11:26
【问题描述】:

获取 Google 日历嵌入代码的内容并在其中添加样式表(manually 或通过 PHP script 之类的东西)并显示自定义样式的公共日历似乎是相当普遍的做法.

奇怪的是,我注意到如果您单击顶部的打印按钮或右下角的“Google 日历”,它会转到 localhost 或页面所在的任何域 - 而不是 Google 日历。

如果您尝试通过 Chrome 开发工具或通过 Firefox 使用 gcal$func$[3].toSource(); 跟踪“gcal$func$[3]();”onclick,它不会找到它或说

"function () {
    [native code]
}"

那么这个函数是从哪里来的,你如何调整它以使它在一个新窗口中打开,使用谷歌 url,而不是当前域 (404)?

【问题讨论】:

    标签: javascript calendar google-calendar-api google-chrome-devtools firefox-developer-tools


    【解决方案1】:

    根据谷歌日历嵌入JS代码,函数指向如下代码

    window.open(Pf(this.c.i.Nb + "/render", "cid", b))

    this.c.i.Nb 表示基本 URL,默认情况下,它是脚本运行的域(在您的情况下是您的域)。但是,它的目的是成为 google.com 域,幸运的是,改变它很容易。 baseURL 是初始化脚本中的参数之一(在您正在抓取的页面中声明),您只需将其配置为https://www.google.com

    如果您使用 PHP,您的代码可能如下所示。

    $page = new DOMDocument("1.0", "utf-8");
    // grab the Google Calendar code
    $page->loadHTMLfile("https://www.google.com/calendar/embed?src=yourcalendar%40gmail.com");
    // set up the baseUrl and print the grabbed page
    echo str_replace('"baseUrl":"/"', '"baseUrl":"https://www.google.com/"', $page->saveHTML());
    

    现在所有链接都应该可以正常工作了。

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多