Javascript或jquery:你可以加载页面然后调用函数吗?

时间:2013-07-06 00:06:57

标签: javascript jquery

场景:您有一个用户可以在其网站上放置的脚本,当他们点击它时,它会重定向到我的网站,然后只有在成功重定向到我的网站后才调用该功能。该功能是我网站的一部分,因此相同的原始安全策略不应该有任何问题。

情景可能吗?

修改

好了,我知道它可以做到,我遇到了这样做的泡菜。

function main(){
$(document).ready(function($){
window.location.href = 'http://www.example.com/michael';
theclient.chat();

});
} 

我希望在加载example.com/michael之后调用client.chat(),但它无效。

更新2

function main(){
window.location.href = 'http://www.reflap.com/michaelnana';

$(document).ready(function(){
theclient.chat();

});

}

这样做会有效吗?

3 个答案:

答案 0 :(得分:2)

您必须在以下区块中在您自己的网站上调用该功能:

来源页面:

function main(){
    window.location.href = 'http://www.example.com/michael';
}

目标网页(http://www.example.com/michael):

$(document).ready(function(){
    theclient.chat();
});   

要明确:如果您输入页面的URL,而不是仅在重定向后,也会调用此方法。

如果您只想在重定向后调用它,则应在执行重定向时添加URL参数。

更新: 重定向完成后,您无法在原始页面上调用函数。

答案 1 :(得分:1)

在目标页面上,如果包含jQuery库,请使用以下代码:

$(document).ready(function(){
theclient.chat();
});

ready()方法可确保在运行JavaScript之前呈现页面(http://www.reflap.com/michaelnana)。

答案 2 :(得分:0)

我已经包含了3个示例文件,这些文件可以作为您尝试执行的操作的骨架。

www.external-site.com/index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>3rd Party Page</title>
  </head>
  <body>
    <script type="text/javascript" 
      src="http://www.example.com/michael/embed.js">
    </script>
  </body>
</html>

www.example.com/michael/embed.js

// load jQuery, keep it in our scope
//   I'll not explain how this works but if you're making an embed
//   script for other sites, you must make sure to encapsulate all
//   your dependencies such as jQuery.
loadDependencies(function($) {
  // document onload
  $(function() {
    // create a button that redirects to example.com/michael
    var button = $('<a>').text('click me').click(function() {
      window.location.href = 'http://www.example.com/micahel';
    });

    // insert that button after this script tag
    var src = 'http://www.example.com/michael/embjed.js';
    $('script[src="' + src + '"]').after(button);
  });
});

www.example.com/michael/index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>Landing Page</title>
    <script type="text/javascript" src="jQuery.js"></script>
    <script type="text/javascript" src="theClient.js"></script>
    <script type="text/javascript">
      $(function() {
        // all visitors to this page will trigger this call, not just
        //   the ones who came from the script embed. If you want to
        //   differentiate I'd recommened adding a query paremeter to
        //   the redirect and reading it there.
        theClient.chat();
      });
    </script>
  </head>
  <body>

  </body>
</html>