使用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