Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80684 views
1
exports.availableDocumentFeatures = [
2
'FetchExternalResources',
3
'ProcessExternalResources',
4
'MutationEvents',
5
'SkipExternalResources'
6
];
7
8
exports.defaultDocumentFeatures = {
9
"FetchExternalResources": ['script', 'link'/*, 'img', 'css', 'frame'*/],
10
"ProcessExternalResources": ['script'/*, 'frame', 'iframe'*/],
11
"MutationEvents": '2.0',
12
"SkipExternalResources": false
13
};
14
15
exports.applyDocumentFeatures = function(doc, features) {
16
var i, maxFeatures = exports.availableDocumentFeatures.length,
17
defaultFeatures = exports.defaultDocumentFeatures,
18
j,
19
k,
20
featureName,
21
featureSource;
22
23
features = features || {};
24
25
for (i=0; i<maxFeatures; i++) {
26
featureName = exports.availableDocumentFeatures[i];
27
if (typeof features[featureName] !== 'undefined') {
28
featureSource = features[featureName];
29
// We have to check the lowercase version also because the Document feature
30
// methods convert everything to lowercase.
31
} else if (typeof features[featureName.toLowerCase()] !== 'undefined') {
32
featureSource = features[featureName.toLowerCase()];
33
} else if (defaultFeatures[featureName]) {
34
featureSource = defaultFeatures[featureName];
35
} else {
36
continue;
37
}
38
39
doc.implementation.removeFeature(featureName);
40
41
if (typeof featureSource !== 'undefined') {
42
if (featureSource instanceof Array) {
43
k = featureSource.length;
44
for (j=0; j<k; j++) {
45
doc.implementation.addFeature(featureName, featureSource[j]);
46
}
47
} else {
48
doc.implementation.addFeature(featureName, featureSource);
49
}
50
}
51
}
52
};
53
54