Drupal 게시물 루프를 표시하는 데 ajax 요청을 사용하고 있습니다.JSON 응답 데이터를 사용하여 JS 루프 항목에 배경 이미지 스타일 적용
$(document).ready(function() {
$.ajax({
type:"GET",
url:"https://www.nba.com/pelicans/api/1.1/json/?type=photo_gallery&tags=community&size=4",
success: function(data) {
let galleriesWrapper = document.getElementById("wrapper--community-galleries");
function create(tagName, props) {
return Object.assign(document.createElement(tagName), (props || {}));
}
function ac(p, c) {
if (c) p.appendChild(c);
return p;
}
for (var i=0; i< data.content.length; i++) {
var link = create("a", {
className: "wrapper--single-gallery",
href: data.content[i].url,
style: "background-image:url(" + data.content[i].images.large + ")"
});
var videoTitle = create("div", {
className: "single-gallery--title",
src: data.content[i].title
});
videoTitle.textContent = data.content[i].title;
ac(galleriesWrapper, ac(link, videoTitle));
}
},
dataType: "jsonp",
});
});
.json 파일에서 게시물의 이미지를 가져 와서 루프의 특정 항목에 대한 CSS 배경 이미지로 삽입합니다.
이 모든 것은 Chrome과 Firefox에서 완벽하게 작동하지만 IE에서는 실패합니다.
DOM 요소를 쉽게 만들고 추가하기 위해 obect.assign을 사용하는 도우미 함수 "create"를 사용하고 있습니다.
object.asign polyfill이 필요했기 때문에 IE가 처음 실패했습니다. 항목이 표시되지 않았습니다.
Polyfill : 내 JS의 상단이 추가되면
if (typeof Object.assign != 'function') {
Object.assign = function(target) {
'use strict';
if (target == null) {
throw new TypeError('Cannot convert undefined or null to object');
}
target = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source != null) {
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
}
return target;
};
}
, 루프 항목은 IE에 표시 얻을,하지만 코드가 나는 배경 이미지 스타일 인라인 실패 주입하기 위해 사용하고 있습니다 (Ajax 요청에서 적절한 게시물 제목이있는 항목이 표시되지만 배경은 공백 임).
편집 : 문제는 스타일 속성을 추가하는 중임을 나타냅니다. 나는이를 사용하는 경우 :
var link = create("a", {
className: "wrapper--single-gallery",
href: data.content[i].url,
style: "background-image:url(" + data.content[i].images.large + ")"
});
링크는 클래스 이름과 HREF로 만들어 지지만 스타일 속성이 추가되지 않습니다.
json 요청 데이터의 URL에 연결되는 방법과 관련이 있다고 생각하여 스타일 "color : red"를 사용하려고했습니다. 이렇게하면 스타일 태그를 링크에 추가하지 않은 것과 같은 결과가 생성됩니다.
JS 뿐인 예 : https://jsfiddle.net/nolaandy/w3gfawcg/
실제로이 작업은 object.assign과 관련이 있습니까? –
두 브라우저 모두에서 JS Fiddle을 보았다면 IE 문제입니다. IE는 object.asign을 사용할 수 없기 때문에 polyfill을 사용해야했습니다. 이 코드는 다른 브라우저에서도 완벽하게 작동합니다. 어떤 종류의 문제인지 아십니까? – 4ndy
나에게 떠오르는 한 가지는 당신이'create '로 전달한 객체가 속성을 설정하는 것으로 보이고 style 속성의 값이 속성에 넣은 것과 약간 다릅니다. 어쩌면'create'는 어떤 속성이 전달되었는지에 따라 다른 것을 할 것입니다. Dunno, 사촌 귀하의 질문에'create' 메소드를 볼 수 없으며 바이올린이로드되지 않습니다. –