我正在开始一个新元素,我们的任务是创建一个通用标题。这意味着在我们拥有的不同域/服务器、我们的客户创建的站点和第三方站点上,我们将需要一种非常简单的方法来将此代码提供给人们。
此通用标题还将包含一些搜索功能,这与我的问题略有相关。简而言之,它将包含 JavaScript 来更改 action
属性在其 <form>
元素,取决于下拉选择,以及提交表单。
我们希望 header 工作的方式是它位于一个位置,我们正在考虑某种 HTTP 请求来获取 header 。我们认为,这将最大限度地提高通用标题的可移植性。
标题需要与 WordPress 很好地集成(不是问题),但也需要与 AngularJS 集成,在我们的讨论中,这是否可能不太确定。因此,搜索功能的“稍微相关”部分。
我们讨论的解决方案之一是在 HTML 中进行,例如 this answer ,但对于通过 HTTP 请求原始 HTML 并将其转储到页面中,我总是有点不安,但也许这是正确的方法,但也许不是?由于我们不确定,我们考虑了 JIRA Issue Collector他们基本上将 JavaScript 流式传输给他们的客户,然后构建问题跟踪器按钮,固定在页面的一侧,其中包含一些 HTML、CSS 和 JS。然后用户可以单击此按钮,打开一个准备提交的表单。这可能过于简单化,但基本上,他们的 JS 代码段打包了 HTML/CSS/JS 并将数据提交到他们的服务器。
这是我们希望采用的方向:让单个文件包含我们需要的所有内容。但是,我想知道一些事情:
最初,对于上面的最后一点,我想将它附加到
window
目的。然后在 JavaScript 中创建一个自定义事件处理程序——但是你怎么做呢?也许下面的伪代码有点离谱,但这就是我问这个问题的原因:/// inside the SearchController in AngularJS
$scope.defaultRealm = 'products';
/// to select default realm
document.when('angularJSLoads', function () {
document.getElementById('universial-header').find('.dropdown', function () {
// put actions to select $scope.defaultRealm in the dropdown options.
})
})
/// to search in own defaultRealm
document.querySelector('.dropdown').onEvent('headerSearch', function (e) {
e.preventDefault();
var data = event.target.value;
// do searching in AngularJS
})
如果有一些更好、更清洁的方法,我会很高兴听到的。
我很感激这方面的任何帮助。这对我们来说是一个新领域,总的来说,我们希望能够拥有一个高度可维护的 header ,可以轻松地与不同的域等共享。
最佳答案
就我个人而言,这就是我将如何处理它。
我会在标题将加载的所有页面上创建一个计划加载到的容器。该容器应该有某种背景表明它没有加载(通常这是灰色的,但你的用户体验案例可能会有所不同)
然后,要实际交付您的 header ,请使用 JS 构建它。
创建一个 JS 文件(比如 buildHeader.js),其中包含编写 html、向 css 写入请求以及为其他 js 写入请求的代码。
关于javascript - 如何共享 HTML/CSS/JS 标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372008/