编程语言
首页 > 编程语言> > 使用Javascript进行跨域模板化

使用Javascript进行跨域模板化

作者:互联网

我目前正在构建一个Javascript库,可用于根据媒体文件的URL轻松创建可嵌入媒体,然后使用Javascript方法和事件进行控制(想想像Flash / Silverlight JW player).

当然,我可以简单地从Javascript库中获取所有html标签并将其发送到浏览器:

function player(url) {
    document.write('<object type="foo"><param name="something" value="bar">' + 
    <param name="source" value=" + url + '/></object>');
}

但我认为这是一个非常丑陋的做法,往往会产生无法管理的代码,几周后你再查看它是不可读的.

因此,模板解决方案似乎是要走的路.我一直在寻找EJS,因为它使用AJAX加载模板,因此您可以在单独的文件中管理模板,而不是直接在HTML页面上.

有一个’问题’:我的图书馆需要完全跨域:图书馆本身可能位于foo.com,而服务网站可能位于bar.com上.因此,如果bar.com想要使用库添加媒体播放器,则需要对位于foo.com上的模板进行AJAX调用,由于浏览器中的同源策略,该模板无法工作.

AFAIK,没有库使用类似JSONP的东西来读写模板来解决这个问题.

谁能指点我解决这个问题?

解决方法:

回答我自己的问题:你需要某种服务器端解决方案来提供JSONP来解决这个问题.假设tou在服务器foo.com上有一个模板,你可以有一个服务器端脚本来回答这些请求:

http://foo.com/template/bar.html?callback=cb

哪个会回归:

cb({
    "html" : "<p>i'm a template!</p>"
});

然后,您可以使用所需的任何模板语言并在应用程序中解析模板.

标签:javascript,same-origin-policy,cross-domain,templating,media-player
来源: https://codeday.me/bug/20190701/1343146.html